android - 使用 edittext 和自定义适配器过滤 Json Listview

标签 android json filter adapter

尝试使用 EditText 过滤我的 ListView ,但每次我在我的 EditText 上输入文本时,我的 ListView 都会变成空白,并且不返回任何结果。我尝试了很多方法,这个似乎是最容易实现的。任何帮助将不胜感激!

在我的适配器上:

public class AdapterTrilhos extends BaseAdapter {
private final Activity activity;

private LayoutInflater inflater;
private List<Trilhos> triList;
private ArrayList<Trilhos> arraylist=null;


public AdapterTrilhos(List<Trilhos> triList, Activity activity) {
    this.activity = activity;
    this.triList = triList;
    this.arraylist = new ArrayList<Trilhos>();
    this.arraylist.addAll(triList);

}


@Override
public int getCount() {
    return this.triList.size();
}

@Override
public Object getItem(int position) {
    return this.triList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


    if (inflater == null)
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null)

            convertView = inflater.inflate(R.layout.dadoslista, null);

            TextView idtxt = (TextView) convertView.findViewById(R.id.txtid);

            TextView tittxt = (TextView) convertView.findViewById(R.id.txttit);

           // TextView usertxt = convertView.findViewById(R.id.txtuser);

            TextView diftxt = (TextView) convertView.findViewById(R.id.txtdif);
   RatingBar ratess= (RatingBar) convertView.findViewById(R.id.ratings);

            Trilhos t = triList.get(position);

            idtxt.setText(String.valueOf(t.getId()));
            tittxt.setText(t.getTitulo());
         //   usertxt.setText(String.valueOf(t.getId_user()));
            diftxt.setText(t.getDificuldade());
            ratess.setRating(t.getMedia());

        return convertView;
    }

public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    triList.clear();
    if (charText.length() == 0) {
        triList.addAll(arraylist);
    } else {
        for (Trilhos cs : arraylist) {
            if (cs.getTitulo().toLowerCase(Locale.getDefault()).contains(charText)) {
                triList.add(cs);
            }
        }
    }
    notifyDataSetChanged();
}

} 以及我的 Activity

search.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int start, int before, int count) {
            // TODO Auto-generated method stub
            int textlength = cs.length();

            String text = search.getText().toString().toLowerCase(Locale.getDefault());
            adapter.filter(text);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

我打算做的是,当我在 editText 上输入文本时,它只会返回包含我输入的单词的结果

最佳答案

我认为你应该直接在你的 Activity 中过滤列表,然后切换到一个新的适配器:

search.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence cs, int start, int before, int count) {
        int textlength = cs.length();

        String text = search.getText().toString().toLowerCase(Locale.getDefault());

        List<Trilhos> filteredList = yourFilterMethod(oldList, text); 

        mListView.setAdapter(new AdapterTrilhos(filteredList, this));

    }
});

private List<Trilhos> yourFilterMethod(List<object> list, String text)
{
    // some stuff that filter your list using text and returns the filtered one

    return filteredList;
}

关于android - 使用 edittext 和自定义适配器过滤 Json Listview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50945901/

相关文章:

java - 在 Java 类中共享公共(public)变量

javascript - 如果值不匹配,则 Angular 过滤器

c# - 如何修复 DeleteManyAsync 返回使用过滤器删除的 0 条记录?

android - 使用 SupportMapFragment getMap() 时得到 java.lang.NullPointerException;在 fragment 中

java - 为什么 Json 无法为 java 枚举正确生成?

android - 如何解决 Unresolved reference fragment ?

jquery - 在执行绘图数据的 jquery ajax 请求时显示等待图像

google-sheets - 谷歌表格过滤器中的附加自定义列

Android canGoBack 始终为 false

javascript - 在 Android 移动浏览器上调用 Window.scrollTo() 会导致 TypeError : No function was found that matched the signature provided