我有一个带有 SimpleAdapter 的 ListActivity,可以使用 simple_items_list_2 布局显示 2 项列表。HashMap 的 ArrayList 保存项目。
该列表必须保存我从不同的 UDP 数据包接收的数据。所以,我有另一个线程,在其中接收这些数据包。从那里,它使用处理程序发送接收到的数据,并将项目添加到列表中。
现在我正确接收了数据包,甚至生成了列表。但是,当我选择说项目 B 时,它有时会选择项目 A。
以下是代码片段:
在 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;
}
有什么帮助吗?