如何引用列表项的原始位置时,文本过滤器被启用? [英] How to refer to the original position of a list item when text filter is enabled?
本文介绍了如何引用列表项的原始位置时,文本过滤器被启用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我使用编辑文本过滤项目,该列表中的位置得到全乱了和项目不再调用适当的意图。任何帮助AP preciated
lv.setOnItemClickListener(新OnItemClickListener(){
公共无效onItemClick(适配器视图<>母公司视图中查看,INT位置,长的id){
。字符串MNAME = filteredValues.get(位置).getName()的toString();
字符串MWEB = filteredValues.get(位置).getWebsite()的toString()。
意图openDetails =新的意图(Test.this,ResourceDetails.class);
叠B =新包();
b.putString(名,MNAME);
b.putString(网络,MWEB);
openDetails.putExtras(B);
startActivity(openDetails);
}
});
私人TextWatcher filterTextWatcher =新TextWatcher(){
公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数,之后INT){
}
公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){
。adapter.getFilter()过滤器(S);
adapter.notifyDataSetChanged();
}
公共无效afterTextChanged(编辑S){
}
};
解决方案
如果您使用 ViewHolder
在适配器
刚在holder类定义realPosition变量,并将其设置在YourAdapter.getView
和在listClick监听器
ContactAdapter.ViewHolder架=(YourAdapter.ViewHolder)view.getTag();
holder.realPosition
When I use edit text to filter the items, the list positions get all messed up and the items no longer call the proper intent. Any help is appreciated
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String mName = filteredValues.get(position).getName().toString();
String mWeb = filteredValues.get(position).getWebsite().toString();
Intent openDetails = new Intent(Test.this, ResourceDetails.class);
Bundle b = new Bundle();
b.putString("name", mName);
b.putString("web", mWeb);
openDetails.putExtras(b);
startActivity(openDetails);
}
});
private TextWatcher filterTextWatcher = new TextWatcher(){
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();
}
public void afterTextChanged(Editable s) {
}
};
解决方案
if you use ViewHolder
in Adapter
just define a realPosition variable in holder class and set it in YourAdapter.getView
and in listClick Listener
ContactAdapter.ViewHolder holder = (YourAdapter.ViewHolder) view.getTag();
holder.realPosition
这篇关于如何引用列表项的原始位置时,文本过滤器被启用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文