【发布时间】:2016-03-05 14:37:16
【问题描述】:
我想过滤一个带有搜索操作栏的 ListAdapter,它是一个 SimpleAdapter。我很难理解如何在我的 onQueryTextSubmit 和 onQueryTextChange 方法中使用 getFilter。我正在使用片段。
我的 onQueryTextSubmit 和 onQueryTextChange 方法工作正常。
这是我的 onCreateOptionsMenu:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu,inflater);
SearchManager searchManager = (SearchManager) this.getContext().getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextChange(String newText)
{
// this is your adapter that will be filtered
// adapter.getFilter().filter(newText);
// adapter.getFilter().filter(newText);
System.out.println("on text chnge text: "+newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
// this is your adapter that will be filtered
// adapter.getFilter().filter(query);
// adapter.getFilter().filter(query);
System.out.println("on query submit: "+query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
// return super.onCreateOptionsMenu(menu);
}
这是我的 ListAdapter:
ListAdapter adapter = new SimpleAdapter(getActivity(), inboxList, R.layout.p_list_item,
new String[] { TAG_ID, TAG_FROM, TAG_COUNTRY, TAG_DATE, TAG_EMAIL, TAG_SUBJECT },
new int[] { R.id.from, R.id.subject, R.id.country, R.id.date, R.id.mail, R.id.roundscore }) {
【问题讨论】:
-
adapter.getFilter().filter(newText)没问题 -
我不能那样用
-
android.widget.Filter是这样工作的,你不能用什么? -
这是说我需要向适配器添加演员表,所以我这样做了,它变成了 ((SimpleAdapter) 适配器).getFilter().filter(query);。然后我收到一个错误:java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.SimpleAdapter.getFilter()' on an null object reference
-
所以你的
adapter变量就是null,确保它被正确初始化
标签: java android android-layout listview android-fragments