【问题标题】:Wrong item selected in list在列表中选择了错误的项目
【发布时间】:2012-04-14 21:37:17
【问题描述】:

我有一个带有 SimpleAdapter 的 ListActivity,可以使用 simple_items_list_2 布局显示 2 项列表。 HashMap 的 ArrayList 保存项目。

该列表必须保存我从不同的 UDP 数据包接收的数据。所以,我有另一个线程,在其中接收这些数据包。从那里,它使用处理程序发送接收到的数据,并将项目添加到列表中。

现在我可以正确接收数据包,甚至生成列表。但是,当我选择说项目 B 时,它有时会选择项目 A。

这里是sn-ps的代码:

在 OnCreate() 中,

        lv = getListView();

        list = new ArrayList<HashMap<String, String>>();

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

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

在处理程序的代码中,在它从线程中获取包含内容的消息后:

        list.add(putData(scanned_name, scanned_addr));
        adapter.notifyDataSetChanged();
            lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 

                TextView name_tv = (TextView) findViewById(android.R.id.text1);
                TextView addr_tv = (TextView) findViewById(android.R.id.text2);

                selectedName = name_tv.getText().toString();
                selectedAddr = addr_tv.getText().toString();

放数据的HashMap函数:

private HashMap<String, String> putData(String name, String address) {
        HashMap<String, String> item = new HashMap<String, String>();
        item.put("name", name);
        item.put("address", address);
        return item;
    }

有什么帮助吗?

【问题讨论】:

    标签: android listview arraylist listactivity simpleadapter


    【解决方案1】:

    我认为你需要使用view.findViewById

    TextView name_tv = (TextView) view.findViewById(android.R.id.text1);
    TextView addr_tv = (TextView) view.findViewById(android.R.id.text2);
    

    【讨论】:

    • 是的,它似乎工作据我了解,在我的代码中,我得到的 TextView 是列表中的第一个,添加视图使其成为单击项目的 TextView?
    • 是的,当您单击一个项目时,会引发 onItemClick 事件,并且该项目的视图作为参数之一传递。所以使用该视图来读取名称和地址
    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多