[英]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.