gpt4 book ai didi

android - ArrayAdapter 更改为 ListView 但 onClickListener 不知道

转载 作者:行者123 更新时间:2023-11-30 04:05:37 25 4
gpt4 key购买 nike

我有 1 个 ListView 和两个 ArrayAdapter

根据 if 语句,这会发生

listView1.setAdapter(adapter1);或者listView1.setAdapter(adapter2);

在 onCreate() 上调用,listView1.setAdapter(adapter1);

因此 listView1.setOnItemClickListener() 连接到适配器 1。

在调用 listView1.setAdapter(adapter2); 的程序执行过程中,ListView 会更新并且显示会显示相应的结果,但是,单击带有 adapter2 结果的项目实际上仍然引用adapter1 结果。

如何让 onItemClickListener 在 listView1 的适配器发生变化时切换?

谢谢

        listView1.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {


Intent i = new Intent("com.project.DetailView");
i.putExtra("serial", list.get(position).getSerial());
i.putExtra("name", list.get(position).getName());

startActivity(i);

}
});

}


adapter1 = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1, list1);

adapter2 = new ArrayAdapter<Object>(this, android.R.layout.simple_list_item_1, list2);

最佳答案

onItemClick 中的代码,不依赖于适配器,它依赖于列表。我认为你应该覆盖这两个适配器的 getItem 方法,而不是通过列表获取项目,getItem 从适配器,如果你从 getItem 返回一个 HashMap (int position),那么你应该修改你的方法如下:

listView1.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

HashMap<String, String> item=getAdapter().getItem(position);

Intent i = new Intent("com.project.DetailView");
i.putExtra("serial", item.get("serial"));
i.putExtra("name", item.get("name"));

startActivity(i);

}

关于android - ArrayAdapter 更改为 ListView 但 onClickListener 不知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com