这是我使用过的教程: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
我输入&#39; a&#39;在过滤器中,列表变为
Aa
Ca
但是当我点击Ca时,我会使用依赖于每个列表项的.equal的进一步操作重定向到BB。
我的列表和自定义适配器的代码与tutrial中的相同,但onclickitem监听器,我已经实现了它,所以我认为我遗漏了一些东西。我尝试搜索并发现了几个相同的问题,但没有人回答,每个都有自我答案,与我的不同,我无法将其应用到我的cusotm适配器。
答案 0 :(得分:3)
主要是因为您正在直接访问数据集。
String member_name = countrylist.get(position).getName();
在过滤过程中,您可能正在实例化,新Collection
会覆盖您在Activity
中使用的引用。
使用
String member_name = ((Country)parent.getItemAtPosition(position)).getName();
它会起作用。
如果parent.getItemAtPosition(position)
已正确实施, Adapter
会访问getItem
中的基础数据集
答案 1 :(得分:1)
您可以使用
String memberName=(YourObject)parent.getAdapter().get(postion).getName;
很容易。