【问题标题】:Get a single field from multi-column ListView using SimpleAdapter使用 SimpleAdapter 从多列 ListView 中获取单个字段
【发布时间】:2026-01-08 01:30:01
【问题描述】:

我有一个 ListActivity,我在其中使用 SimpleAdapter 创建了一个包含 2 个字段的列表。这对值使用 Map 存储,列表是 ArrayList。 我有一个 onItemClickListener 。在选择一个列表条目时,我得到了这对,即 2 个值。我只需要获得其中一个值。

例如,如果列表项是“John”,则为“123”。从列表中选择条目后,我想将“123”存储在字符串中 有什么帮助吗?

这里是sn-p的代码:

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

        });

【问题讨论】:

    标签: android listview arraylist listactivity simpleadapter


    【解决方案1】:

    您必须捕获android.R.id.text1android.R.id.text2 的内容。所以,在你的onItemClick(...) 你必须这样做:

    TextView v = (TextView)findViewById(R.id.text1);
    TextView v1 = (TextView)findViewById(R.id.text2);
    字符串内容1=v.getText().toString();
    字符串内容2=v2.getText().toString();

    您可以随意管理它们,甚至在 Toast 中:

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

    【讨论】:

    • 谢谢。工作得很好。只是因为我使用了预定义的布局 simple_list_item_2,它应该是TextView v = (TextView)findViewById(android.R.id.text1); TextView v1 = (TextView)findViewById(android.R.id.text1);
    最近更新 更多