使用 customAdapter 后项目的错误位置
Wrong position of items after using a customAdapter
这是我用过的教程:http://www.tutorialsbuzz.com/2014/08/filter-custom-listviewbaseadapter.html
我对其实施了 onItemClickListener
OnItemClickListener myListViewClicked = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String member_name = countrylist.get(position).getName();
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
if (isInternetPresent) {
if (member_name.equals("aa")) {
Intent i = new Intent(Listview.this, Start.class);
startActivity(i);
displayInterstitial();
} else {
prName.show();
}
}
};
lv.setOnItemClickListener(myListViewClicked);
}
所以,让我们假设我的原始列表是
Aa
BB
Ca
DD
然后我在过滤器中输入 'a',然后列表变成
Aa
Ca
但是当我单击 Ca 时,我会使用取决于每个列表项的 .equal 的进一步操作重定向到 BB。
我的列表和自定义适配器的代码与教程中的相同,但是我已经实现了 onclickitem 侦听器,所以我想我在其中遗漏了一些东西。我尝试搜索并找到了几个相同的问题,但 none 回答了,每个问题的自我回答都与我的不同,我无法将其应用于我的 cusotm 适配器。
这主要是因为您是直接访问数据集。
String member_name = countrylist.get(position).getName();
在过滤过程中,您可能正在实例化和新 Collection
覆盖您在 Activity
中使用的引用。
使用
String member_name = ((Country)parent.getItemAtPosition(position)).getName();
它会起作用。
parent.getItemAtPosition(position)
访问您的 Adapter
中的基础数据集,如果您的 getItem
已正确实施
You can use
String memberName=(YourObject)parent.getAdapter().get(postion).getName;
很简单。
这是我用过的教程:http://www.tutorialsbuzz.com/2014/08/filter-custom-listviewbaseadapter.html
我对其实施了 onItemClickListener
OnItemClickListener myListViewClicked = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String member_name = countrylist.get(position).getName();
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
if (isInternetPresent) {
if (member_name.equals("aa")) {
Intent i = new Intent(Listview.this, Start.class);
startActivity(i);
displayInterstitial();
} else {
prName.show();
}
}
};
lv.setOnItemClickListener(myListViewClicked);
}
所以,让我们假设我的原始列表是
Aa
BB
Ca
DD
然后我在过滤器中输入 'a',然后列表变成
Aa
Ca
但是当我单击 Ca 时,我会使用取决于每个列表项的 .equal 的进一步操作重定向到 BB。
我的列表和自定义适配器的代码与教程中的相同,但是我已经实现了 onclickitem 侦听器,所以我想我在其中遗漏了一些东西。我尝试搜索并找到了几个相同的问题,但 none 回答了,每个问题的自我回答都与我的不同,我无法将其应用于我的 cusotm 适配器。
这主要是因为您是直接访问数据集。
String member_name = countrylist.get(position).getName();
在过滤过程中,您可能正在实例化和新 Collection
覆盖您在 Activity
中使用的引用。
使用
String member_name = ((Country)parent.getItemAtPosition(position)).getName();
它会起作用。
parent.getItemAtPosition(position)
访问您的 Adapter
中的基础数据集,如果您的 getItem
已正确实施
You can use
String memberName=(YourObject)parent.getAdapter().get(postion).getName;
很简单。