0

SimpleAdapter を使用して 2 つのフィールドを持つリストを作成した ListActivity があります。値のペアは Map を使用して格納され、リストは ArrayList です。これには onItemClickListener があります。リスト エントリを選択すると、ペア、つまり 2 つの値が取得されます。これらの値の 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();
            }

        });
4

1 に答える 1

1

android.R.id.text1またはの内容をキャッチする必要がありandroid.R.id.text2ます。だから、あなたonItemClick(...)がしなければならない:

TextView v = (TextView)findViewById(R.id.text1);
TextView v1 = (TextView)findViewById(R.id.text2);
文字列 content1=v.getText().toString();
文字列 content2=v2.getText().toString();

トースト内であっても、必要に応じてそれらを管理できます。

Toast.makeText(getApplicationContext(),v.getText().toString(),Toast.LENGTH_LONG).show();

于 2012-04-04T21:46:34.820 に答える