2012-04-04 5 views
0

Ich habe eine ListActivity, in der ich einen SimpleAdapter verwendet habe, um eine Liste zu erstellen, die 2 Felder hat. Das Wertepaar wird unter Verwendung einer Map gespeichert, und die Liste ist eine ArrayList. Ich habe einen OnItemClickListener für diese. Beim Auswählen eines Listeneintrags erhalte ich das Paar, d. H. Die 2 Werte. Ich muss nur 1 dieser Werte erhalten.Erhalte ein einzelnes Feld aus mehrspaltigem ListView mit SimpleAdapter

Zum Beispiel, wenn das Listenelement "John", "123" ist. Ich möchte "123" in einem String speichern, nachdem ich den Eintrag aus der Liste ausgewählt habe. Irgendwelche Hilfe?

Hier ist der Code-Schnipsel:

 ListView lv = getListView(); 
     ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>(); 

     list.add(putData(scanned_name, scanned_addr)); 

     String[] from = { "name", "address" }; 
     int[] to = { android.R.id.text1, android.R.id.text2 }; 

     SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), list, 
       android.R.layout.simple_list_item_2, from, to); 
     setListAdapter(adapter); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 


       Toast.makeText(getApplicationContext(), 
         parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show(); 
      } 

     }); 

Antwort

1

Sie haben den Inhalt von android.R.id.text1 oder android.R.id.text2 zu fangen. Also, in Ihrem onItemClick(...) müssen Sie tun:

TextView v = (TextView) findViewById (R.id.text1);
TextView v1 = (Textansicht) findViewById (R.id.text2);
Zeichenfolge content1 = v.getText(). ToString();
Zeichenfolge content2 = v2.getText(). ToString();

und Sie können sie verwalten, wie Sie wollen, auch in einem Toast: (. GetApplicationContext(), v.getText() toString(), Toast.LENGTH_LONG)

Toast.makeText .show();

+1

Danke. Arbeitete gut. Genau, da ich das vordefinierte Layout simple_list_item_2 verwendet habe, sollte es sein 'TextView v = (TextView) findViewById (android.R.id.text1); TextView v1 = (TextView) findViewById (android.R.id.text1); ' – Alabhya

+0

Uh, du hast Recht (+1). Ich bin glücklich, hilfsbereit zu sein ... – Ant4res

Verwandte Themen