【发布时间】:2016-09-06 05:56:20
【问题描述】:
搜索选项在对话框片段中无法正常工作。尽管我在活动中的其他应用程序中使用过相同的选项。我正在使用 Recyclerview。
这是我在自定义适配器中的代码:
public void filter(final String text) {
new Thread(new Runnable() {
@Override
public void run() {
filterlist.clear();
if (TextUtils.isEmpty(text)) {
filterlist.addAll(bank);
} else {
for (Employee item : bank) {
if (item.getBank_name().toLowerCase().contains(text.toLowerCase())) {
// Adding Matched items
filterlist.add(item);
}
}
}
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
}).start();
}
错误在((Activity) context).runOnUiThread(new Runnable())这一行
Logcat:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.runOnUiThread(java.lang.Runnable)' on a null object reference
at com.example.abhishek.project.CustomAdapter$1.run(CustomAdapter.java:75)
回收站视图:
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
try{
if(TextUtils.isEmpty(newText)){
ca.filter("");
}
else{
ca.filter(newText.toString());
}
private void setupSearchView() {
search.setIconifiedByDefault(false);
search.setOnQueryTextListener(this);
search.setSubmitButtonEnabled(true);
search.setQueryHint("Search Here");
}
【问题讨论】:
-
但是我们去掉runonuithread时没有报错。
-
在列表中添加项目并调用
notifyDatasetChanged()应该在适配器正在初始化的活动或片段中完成。 -
使用this通用适配器
标签: android android-recyclerview android-dialogfragment searchview