Друзья, у меня есть фрагмент с поиском и повторным просмотром в нем. Я хочу реализовать это представление для поиска в данных повторного просмотра. Я сталкиваюсь с проблемой, когда пытаюсь вызвать метод из моего класса адаптера в моем фрагменте, он не позволяет его и просит сделать метод в классе адаптера статическим, что не хорошо. Вот необходимый фрагмент кода -
private void processQuery(String query) {
// in real app you'd have it instantiated just once
ArrayList<String> result = new ArrayList<>();
// case insensitive search
for (String category : category_name) {
if (category.toLowerCase().contains(query.toLowerCase())) {
result.add(category);
}
}
(MyCategoryAdaptercheckbox) MyAdapter.setCategorynames(result);
}
Я получаю сообщение об ошибке -
(MyCategoryAdaptercheckbox) MyAdapter.setCategorynames(result);
Вот мое объявление и инициализация MyAdaper -
RecyclerView.Adapter MyAdapter;
MyAdapter = new MyCategoryAdaptercheckbox(getMyCategoryAdapter1, getActivity().getApplicationContext(),category_name);
recyclerView.setAdapter(MyAdapter);
А вот мой метод класса адаптера (setCategorynames). Он просит меня сделать этот метод статическим -
public void setCategorynames(List<String> category_name) {
this.category_name = category_name;
notifyDataSetChanged();
}
Итак, я хочу знать, как я могу вызвать метод класса адаптера во фрагменте?
Код моего адаптера класса -
public class MyCategoryAdaptercheckbox extends RecyclerView.Adapter<MyCategoryAdaptercheckbox.ViewHolder> {
List<GetMyCategoryAdapter> getMyCategoryAdapter;
Context context;
List<String> category_name;
GetMyCategoryAdapter getMyCategoryAdapter1;
public MyCategoryAdaptercheckbox(List<GetMyCategoryAdapter> getMyCategoryAdapter, Context context, List<String> category_name) {
this.getMyCategoryAdapter = getMyCategoryAdapter;
this.context = context;
this.category_name = category_name;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
if (viewHolder instanceof ViewHolder){
}
getMyCategoryAdapter1 = getMyCategoryAdapter.get(i);
((ViewHolder) viewHolder).tv_categorytitle.setText(getMyCategoryAdapter1.getC_name());
((ViewHolder) viewHolder).tv_categoryid.setText(getMyCategoryAdapter1.getC_id());
((ViewHolder) viewHolder).gt= getMyCategoryAdapter1;
}
public void filterList(ArrayList<String> filterdNames) {
this.category_name = filterdNames;
notifyDataSetChanged();
}
}
}