2016-04-14 23 views
-1

Aşağıdaki kodda web ..... gelen XML değerlerinden değerler getiriyorum kodları doğru değerleri alıyorum ama KEY çevirmek spinneer1 geçmek mümkün değilim ve döndürücü1 değiştirildiğinde, eğiricide2 ilgili DEĞERLER buna göre değiştirilecektir. LogCat olarakNasıl spinmer1 ve spinner1 android için karşılık gelen DEĞERLER tohma2 KEY nasıl geçmek için

Ben Jackfruit spinner1 seçilmişse,

{ 
Jackfruit=[Cabbage, Kesar, Amond], 
Date=[van, hall, Brinjal], 
Brinjal=[Cabbage, Kesar, Amond] 
} 

Yani iplikçiler hem geçmek zorunda böyle değerleri alıyorum sonra- Lahana, Kesar, Amond gerektiği spinner2

yılında diplay ben UPDATE-3 MainActivity.java

ait aşağıda koddan alıyorum yukarıdaki logcat
NodeList nodeList = doc.getElementsByTagName("a:AAAAA"); 
for (int i = 0; i < nodeList.getLength(); i++) { 
    Element el = (Element) nodeList.item(i); 

    String awValue = el.getElementsByTagName("a:W").item(0).getTextContent(); 

    if (!values.containsKey(awValue)) { 
     values.put(awValue, new ArrayList<String>()); 

    } 
    String arValue = el.getElementsByTagName("a:R").item(0).getTextContent(); 
    values.get(awValue).add(arValue); 
} 
Log.d("ADebugTag", "Value: " + values); 

Ve MainActivity.java bütün kod eğiren tıklamada spinner2 bir tane spinner1 anahtarın değerini ve ilgili DEĞERLERİ geçmesine nasıl

public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener, OnClickListener { 

    ArrayList<String> title; 
    ArrayList<String> title2; 
    Button button; 
    Spinner spinner; 
    Spinner spinner2; 
    private EditText fromDateEtxt; 
    //private EditText toDateEtxt; 

    private DatePickerDialog fromDatePickerDialog; 
    //private DatePickerDialog toDatePickerDialog; 

    private SimpleDateFormat dateFormatter; 

    ArrayAdapter<String> from_adapter; 
    ArrayAdapter<String> from_adapter2; 
    Map<String, List<String>> values = new HashMap<String, List<String>>(); 
    @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     title = new ArrayList<String>(); 
     title2 = new ArrayList<String>(); 

     button = (Button) findViewById(R.id.button1); 
     spinner = (Spinner) findViewById(R.id.spinner1); 
     spinner.setOnItemSelectedListener(this); 

     spinner2 = (Spinner) findViewById(R.id.spinner2); 
     spinner2.setOnItemSelectedListener(this); 
     findViewsById(); 

     setDateTimeField(); 
     if (android.os.Build.VERSION.SDK_INT > 9) { 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
     } 


     button.setOnClickListener(new OnClickListener() 
     { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       parse(); 

       from_adapter=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_item, title); 
       from_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

       from_adapter2=new ArrayAdapter<String>(getBaseContext(),android.R.layout.simple_spinner_item, title2); 
       from_adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 


       spinner.setAdapter(from_adapter); 
       spinner2.setAdapter(from_adapter2); 


      } 

      private Object from_adapter(int i) { 
       // TODO Auto-generated method stub 
       return null; 
      } 

     }); 


    } 



    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
      long id) { 
     Toast.makeText(parent.getContext(), ""+spinner.getSelectedItem().toString().trim(), 
       Toast.LENGTH_LONG).show(); 
    } 

    public void onNothingSelected(AdapterView<?> arg0) { 
    } 

    protected void parse() { 
     // TODO Auto-generated method stub 


     try { 

      URL url = new URL(
        "WEB URL"); 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse(new InputSource(url.openStream())); 
      doc.getDocumentElement().normalize(); 

      NodeList nodeList = doc.getElementsByTagName("a:AAAA"); 
      for (int i = 0; i < nodeList.getLength(); i++) { 
       Element el = (Element) nodeList.item(i); 
       // get the a:W value 
       String awValue = el.getElementsByTagName("a:W").item(0).getTextContent(); 
       // add the above value in our map as key if it isn't present in the map, this key will 
       // have a list associated with it in which ALL the values for a:R will be stored, if 
       // the awValue key is present then you just add the new a:R value to its list 
       if (!values.containsKey(awValue)) { 
        values.put(awValue, new ArrayList<String>()); 
       } 
       // also add the value pointed by a:R to the list associated with a:W 
       String arValue = el.getElementsByTagName("a:R").item(0).getTextContent(); 
       values.get(awValue).add(arValue); 
       Log.d("ADebugTag", "Value: " + arValue); 
      } 
      for (int i = 0; i < nodeList.getLength(); i++) { 

       Node node = nodeList.item(i);  

       Element fstElmnt = (Element) node; 
       NodeList nameList = fstElmnt.getElementsByTagName("a:W"); 
       Element nameElement = (Element) nameList.item(0); 
       nameList = nameElement.getChildNodes();   

       NodeList websiteList = fstElmnt.getElementsByTagName("a:R"); 
       Element websiteElement = (Element) websiteList.item(0); 
       websiteList = websiteElement.getChildNodes(); 

       title.add(((Node) nameList.item(0)).getNodeValue()); 

      } 
      NodeList nodeList2 = doc.getElementsByTagName("a:AAAA"); 
      for (int i = 0; i < nodeList2.getLength(); i++) { 

       Node node = nodeList2.item(i);  

       Element fstElmnt = (Element) node; 
       NodeList nameList = fstElmnt.getElementsByTagName("a:R"); 
       Element nameElement = (Element) nameList.item(0); 
       nameList = nameElement.getChildNodes();   
       title2.add(((Node) nameList.item(0)).getNodeValue()); 

      } 
      Set<String> set = new LinkedHashSet<String>(title); 
      title = new ArrayList<String>(set); 
      // Collection<String> set = new LinkedHashSet<String>(months); 
      Set<String> set2 = new LinkedHashSet<String>(title2); 
      title2 = new ArrayList<String>(set2); 
      System.out.println("list are"); 
      System.out.println(set); 
      System.out.println("list 2 are"); 
      System.out.println(set2); 
     } catch (Exception e) { 
      System.out.println("XML Pasing Excpetion = " + e); 
     } 

    } 

olduğunu

Değişiklikler-1

Aşağıdaki kod itibaren

i Jackfruit sonra Lahana, Kesar, Amond

public void onItemSelected(AdapterView<?> parent, View view, int pos, 
      long id) { 
     String lang_Name = parent.getItemAtPosition(pos).toString(); 
     List<String> lang_Key = values.get(lang_Name); 
     Toast.makeText(parent.getContext(), ""+lang_Key, 
       Toast.LENGTH_LONG).show(); 
    } 

doğru tost seçilirse onun yazışma değerinin doğru yani tost ardından spinner1 değerini değiştirirseniz ve istediğim Spinner2 'ye, spinner1'e bağlı olarak dinamik olarak geçecek tost değerleri.

cevap

0

onItemSelected öğesindeki döndürücü1 değerini (HashMap anahtarı) aldığınızda ve ilgili değerleri aldığınızda, döndürücü2 adaptörüne sahip olduğunuz değerleri verin ve yenileyin.

from_adapter2.notifyDataSetChanged(); 

Bu kodu deneyin;

Ben doğru spinner2 i geçmek istediğiniz değerleri kızartma ve ben yapamadığı olduğumu aşağı ve istediğim bir değer açılan birbiri ardına spinner2 birine geçmek spinner1 değerini seçerek am
public void onItemSelected(AdapterView<?> parent, View view, int pos, 
     long id) { 
    String lang_Name = parent.getItemAtPosition(pos).toString(); 
    List<String> lang_Key = values.get(lang_Name); 
    from_adapter2.clear(): 
    for(String s : lang_Key){ 
      from_adapter2.insert(s, from_adapter2.getCount()); 
    } 
    from_adapter2.notifyDataSetChanged(); 
} 
+1

.. .Lütfen Changes-1 kodunda –

+0

yaa'yı görüyorsunuz, ancak uygulamayı ilk başlattığımda diğer tüm değerleri de gösterdiğimde fakat spinner1'i değiştirdiğimde seçili doğru listeleri gösterir, yani ilk gösterimde tüm varsayılan değerleri gösterir –

+0

onCreate Bağdaştırıcıyı döndürücüde ayarlamadan önce (spinner2.setAdapter (from_adapter2);), bağdaştırıcıyı boşaltın. from_adapter2.clear(); – Ricardo

İlgili konular