簡體   English   中英

帶過濾器的自定義列表適配器在android中不起作用

[英]custom list adapter with filter doesn't work in android

嗨,大家好,我有一個自定義列表適配器和edittext作為過濾器,當我鍵入任何內容時,列表消失並且沒有任何內容被過濾

這是適配器類中的filter方法

 public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    DataList.clear();
    if (charText.length() == 0) {
        DataList.addAll(arraylist);
    } else {
        for (Electors wp : arraylist) {
            if (wp.getName().toLowerCase(Locale.getDefault())
                    .contains(charText)) {
                DataList.add(wp);
            }
        }
    }
    notifyDataSetChanged();
}

這就是我在mainactivity中稱呼它的地方

 name.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                                  int count) {


        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {

        }

        @Override
        public void afterTextChanged(Editable theWatchedText) {

            String text = name.getText().toString().toLowerCase(Locale.getDefault());
            Vote.this.adapter.filter(text);

        }
    });

任何建議,將不勝感激

謝謝

投票.this.adapter.getFilter()。filter(s);

onTextChanged函數中。 這應該為您工作。

您可以在onTextChanged()方法中使用它,如下所示

editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            //Use this below line if you want to use it in filter method from your adapter and put the below code in that method.
            //filter(editText.getText().toString());
            String text = editText.getText().toString().toLowerCase();
            filteredList.clear();
            for (String str : arrayList){
                String name = str.toLowerCase();
                if(name.contains(text)) {
                    filteredList.add(str);
                }
            }
            adapter.notifyDataSetChanged();
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });

而過濾列表是您的DataList。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM