如何引用列表项的原始位置时,文本过滤器被启用? [英] How to refer to the original position of a list item when text filter is enabled?

查看:136
本文介绍了如何引用列表项的原始位置时,文本过滤器被启用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用编辑文本过滤项目,该列表中的位置得到全乱了和项目不再调用适当的意图。任何帮助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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆