[英]Can't access public void method
我的RecyclerView.Adapter
有此方法
public void filter(String text) {
mDataSet.clear();
if(text.isEmpty()){
mDataSet.addAll(mDataSet);
} else{
text = text.toLowerCase();
for(AppInfo item: mDataSet){
if(item.getAppName().toLowerCase().contains(text)){
mDataSet.add(item);
}
}
}
notifyDataSetChanged();
}
我正在嘗試通過以下方式從我的Activity
訪問它:
search_view.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Here is where I'm trying to call the method
mAdapter.filter(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return true;
}
});
但是由於某種原因,我無法訪問該方法。 有人可以向我解釋為什么嗎?
您已將mAdapter
聲明為RecyclerView.Adapter
,因此您只能訪問RecyclerView.Adapter
聲明的方法,而不能訪問自定義類。 例如,假設您有兩個類:
public class Adapter {
public void firstMethod() {}
}
public class ExtendedAdapter extends Adapter {
public void secondMethod() {}
}
mAdapter
聲明為Adapter
的實例,則只能調用firstMethod()
因為編譯器僅知道該方法。 mAdapter
聲明為ExtendedAdapter
的實例,則可以通過繼承訪問firstMethond()
以及僅屬於ExtendedAdapter
secondMethod()
。 因此,基本上,您需要將mAdapter
聲明為擴展RecyclerView.Adapter
的類的實例,無論您如何調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.