这是我到目前为止尝试过的:
Tab1.java
private ArrayList<NewsModel> mExampleList;
mExampleList = new ArrayList<>();
search.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) {
}
@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});
private void filter(String text) {
ArrayList<NewsModel> filteredList = new ArrayList<>();
for (NewsModel item : mExampleList) {
if (item.getTitle().toLowerCase().contains(text.toLowerCase())) {
filteredList.add(item);
}
}
newsAdapter.filterList(filteredList);
}
Adapter.java
public void filterList(ArrayList<NewsModel> filteredList) {
newsModelList = filteredList;
notifyDataSetChanged();
}
我该如何解决此错误?java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void com.devapps.sakoriassam.NewsAdapter.filterList(java.util.ArrayList)'
newsAdapter
,然后再添加侦听器以进行搜索编辑NewsAdapter()
中初始化onCreateView()
您可以在onCreateView()
中执行类似的操作newsAdapter = new NewsAdapter();
recyclerView.setAdapter(newsAdapter);
这应该在调用filterList()
方法之前完成。让我知道这是否适合您]