2017-10-11 2 views
2

Je suis en train de mettre en œuvre un spinner personnalisé pour mon application où j'utilise des valeurs de champs cachés. Cela fonctionne mais quand je met à jour à nouveau l'article qui est sauvé à la première fois ne montre pas sur spinner j'ai besoin il montrera sur spinner. merci ci-dessous est mon code.Impossible de récupérer la valeur de spinner

final MyData items[] = new MyData[25]; 
    items[14] = new MyData("5ft 1in","154"); 
    items[15] = new MyData("5ft 2in","157"); 
    items[16] = new MyData("5ft 3in","160"); 
    items[17] = new MyData("5ft 4in","162"); 
    items[18] = new MyData("5ft 5in","165"); 
    items[19] = new MyData("5ft 6in","167"); 
    items[20] = new MyData("5ft 7in","170"); 
    items[21] = new MyData("5ft 8in","172"); 
    items[22] = new MyData("5ft 9in","175"); 
    items[23] = new MyData("5ft 10in","177"); 
    items[24] = new MyData("5ft 11in","180"); 
    items[25] = new MyData("5ft 12in","182"); 
    items[26] = new MyData("6ft 1in","185"); 
    items[27] = new MyData("6ft 2in","187"); 
    items[28] = new MyData("6ft 3in","190"); 
    items[29] = new MyData("6ft 4in","193"); 
    items[30] = new MyData("6ft 5in","195"); 
    items[31] = new MyData("6ft 6in","198"); 
    items[32] = new MyData("6ft 7in","201"); 
    items[33] = new MyData("6ft 8in","203"); 
    items[34] = new MyData("6ft 9in","206"); 
    items[35] = new MyData("6ft 10in","208"); 
    items[36] = new MyData("6ft 11in","211"); 
    items[37] = new MyData("6ft 12in","213"); 
    items[38] = new MyData("Above 7ft","217"); 
    ArrayAdapter<MyData> adapter = new ArrayAdapter<MyData>(this, android.R.layout.simple_spinner_item, items); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spinHeight1.setAdapter(adapter); 
    for(int i=0; i < adapter.getCount(); i++) { 
     if (partnerHeight1.trim().equalsIgnoreCase(adapter.getItem(i).toString())) { 
      spinHeight1.setSelection(i); 
      break; 
     } 
    } 

    spinHeight1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
      MyData d = items[i]; 
      heightFrom=d.getValue(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 
+0

Avez-vous déboguer votre code? Votre boucle for est en cours d'exécution ou non? Parce que vous vérifiez instantanément après avoir réglé l'adaptateur –

+0

voulez-vous la valeur sélectionnée? –

+0

Oui, je veux la valeur sélectionnée. –

Répondre

1

essayer cette façon

spinHeight1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 

heightFrom=spinHeight1.getSelectedItem().toString(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 

     } 
    }); 
+0

Cela ne fonctionne pas –

+0

avez-vous déboguer? votre curseur va à l'intérieur ou non à heightfrom = –

+0

J'ai utilisé Log.e ("heightfrom", heightfrom); qui n'est pas imprimé sur le journal –

1

si partnerHeight1 est une chaîne alors

for(int i=0; i < items.length; i++) { 

     if (partnerHeight1.trim().equalsIgnoreCase(items[i].getValue())) { 
      spinHeight1.setSelection(i); 
      break; 
     } 
    } 

si partnerHeight1 est MyData alors

for(int i=0; i < items.length; i++) { 

     if (partnerHeight1.getValue().equalsIgnoreCase(items[i].getValue())) { 
      spinHeight1.setSelection(i); 
      break; 
     } 
    } 
+0

qu'est-ce que la fonction de message –

+0

Méthode d'accès des membres MyData Je considère deux ID de membre et le message –

+0

cette méthode ne résout pas –

0

Si les données d'un adaptateur est modifié pour ce les données à refléter Voir Adapter.notifyDataSetChanged();

notifyDataSetChanged vide()

Avertit les observateurs attachés que les données sous-jacentes ont été modifiées et un mode d'affichage qui reflète l'ensemble de données devrait se rafraîchir.