2012-04-04 8 views
0

SimpleAdapterを使用して2つのフィールドを持つListActivityを持っています。値のペアはMapを使用して格納され、リストはArrayListです。 私はこれのためにonItemClickListenerを持っています。リスト項目を選択すると、その対、すなわち2つの値が得られる。私はそれらの値の1つだけを取得する必要があります。SimpleAdapterを使用して複数列のListViewから1つのフィールドを取得します。

たとえば、リストアイテムが "John"、 "123"の場合。リストからエントリを選択した後に文字列に "123"を保存したい 助けが必要ですか?

は、ここでは、コードスニペットです:

 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(); 
      } 

     }); 

答えて

1

あなたはandroid.R.id.text1またはandroid.R.id.text2のコンテンツをキャッチする必要があります。だから、あなたのonItemClick(...)であなたはする必要があります:

TextView v =(TextView)findViewById(R.id.text1);
TextView v1 =(TextView)findViewById(R.id.text2);
String content1 = v.getText()。toString();
String content2 = v2.getText()。toString();

、あなたが好きなあなたも、トーストの中に、それらを管理することができます(。getApplicationContext()、v.getText()のtoString()、Toast.LENGTH_LONG)

Toast.makeText .SHOW ();

+1

ありがとうございます。うまくいった。 あらかじめ定義されたレイアウトsimple_list_item_2を使ったので、それは であるはずです。 'TextView v =(TextView)findViewById(android.R.id.text1); TextView v1 =(TextView)findViewById(android.R.id.text1); ' – Alabhya

+0

あなたは正しいです(+1)。私は助けになってうれしいです... – Ant4res

関連する問題