adapter.getFilter().filter(newText) 在 Activity 中不工作,但在 Fragment 中工作正常
adapter.getFilter().filter(newText) is not working in Activity but working properly in Fragment
Fragment_Adapter_Calling.java 文件
MyStudentAdapterU adp = new MyStudentAdapterU(stuData, getContext());
stdRecyclerView.setAdapter(adp);
stdRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_menu,menu);
MenuItem item=menu.findItem(R.id.search_menu);
SearchView searchView=(SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adp.getFilter().filter(newText);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
但是当我尝试在 Activity.java 文件中粘贴相同的代码来调用适配器时,它显示错误“无法在 'ProviderAdapter' 上解析方法 'getFilter'
adapter.getFilter.filter(newText) 行;
ProviderAdapter adp=new ProviderAdapter(ProviderActivityList.this,lists);
r1.setAdapter(adp);
r1.setLayoutManager(new LinearLayoutManager(ProviderActivityList.this));
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu,menu);
MenuItem item=menu.findItem(R.id.search_menu);
SearchView searchView=(SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adp.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
错误图片
Error Screenshot
在第一个代码片段中,您将 adp
设置为 MyStudentAdapterU
,这显然有一个 getFilter()
方法。
在第二个代码片段中,您将 adp
设置为 ProviderAdapter
,这显然 没有 getFilter()
方法。
Fragment_Adapter_Calling.java 文件
MyStudentAdapterU adp = new MyStudentAdapterU(stuData, getContext());
stdRecyclerView.setAdapter(adp);
stdRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
inflater.inflate(R.menu.search_menu,menu);
MenuItem item=menu.findItem(R.id.search_menu);
SearchView searchView=(SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adp.getFilter().filter(newText);
return false;
}
});
super.onCreateOptionsMenu(menu, inflater);
}
但是当我尝试在 Activity.java 文件中粘贴相同的代码来调用适配器时,它显示错误“无法在 'ProviderAdapter' 上解析方法 'getFilter' adapter.getFilter.filter(newText) 行;
ProviderAdapter adp=new ProviderAdapter(ProviderActivityList.this,lists);
r1.setAdapter(adp);
r1.setLayoutManager(new LinearLayoutManager(ProviderActivityList.this));
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_menu,menu);
MenuItem item=menu.findItem(R.id.search_menu);
SearchView searchView=(SearchView)item.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adp.getFilter().filter(newText);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
错误图片 Error Screenshot
在第一个代码片段中,您将 adp
设置为 MyStudentAdapterU
,这显然有一个 getFilter()
方法。
在第二个代码片段中,您将 adp
设置为 ProviderAdapter
,这显然 没有 getFilter()
方法。