public class BrandsAdapter extends RecyclerView.Adapter<BrandsAdapter.ViewHolder> implements Filterable {
private final OnListFragmentInteractionListener mListener;
int itemLayout = R.layout.brand_item;
private List<Brand> mValues;
private List<Brand> contactListFiltered;
private LoadImage loadImage;
Context mcontext;
public BrandsAdapter(Context context, List<Brand> items, int i, OnListFragmentInteractionListener listener) {
mValues = items;
loadImage = LoadImage.getInstance(context);
contactListFiltered = items;
mListener = listener;
if (i == 1) {
itemLayout = R.layout.brand_item2;
}
mcontext = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(itemLayout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = contactListFiltered.get(position);
holder.mNameView.setText(holder.mItem.getBrandname());
PicassoTrustAll.getInstance(mcontext).load(contactListFiltered.get(position).getBrandimage()).placeholder(R.drawable.progress_animation).into(holder.mLogoView);
holder.mView.setOnClickListener(v -> {
if (null != mListener) {
mListener.onListFragmentInteraction(holder.mItem);
}
});
}
@Override
public int getItemCount() {
return contactListFiltered.size();
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
contactListFiltered = mValues;
} else {
List<Brand> filteredList = new ArrayList<>();
for (Brand row : mValues) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
if (row.getBrandname().toLowerCase().contains(charString.toLowerCase())) {
filteredList.add(row);
}
}
contactListFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = contactListFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
contactListFiltered = (ArrayList<Brand>) filterResults.values;
notifyDataSetChanged();
}
};
}
public class ViewHolder extends RecyclerView.ViewHolder {
final View mView;
final TextView mNameView;
final ImageView mLogoView;
final ProgressBar progressBar;
Brand mItem;
public ViewHolder(View view) {
super(view);
mView = view;
mNameView = view.findViewById(R.id.brand_name);
mLogoView = view.findViewById(R.id.brand_img);
progressBar = view.findViewById(R.id.progress_bar);
}
@Override
public String toString() {
return super.toString() + " '" + mNameView.getText() + "'";
}
}
}
когда я нажал два элемента одновременно, приложение вызывает метод интерфейса два раза mListener.onListFragmentInteraction(holder.mItem);
Это
findNavController(requireActivity(), R.id.nav_host_support).navigate(R.id.action_brandsFragment_to_devicesFragment, bundle);
StackTrace
Process: com.unicomg.proserve, PID: 25752
java.lang.IllegalArgumentException: navigation destination com.unicomg.proserve:id/action_brandsFragment_to_devicesFragment is unknown to this NavController
at androidx.navigation.NavController.navigate(NavController.java:789)
at androidx.navigation.NavController.navigate(NavController.java:730)
at androidx.navigation.NavController.navigate(NavController.java:716)
at com.unicomg.proserve.ui.main.fragments.brands.BrandsFragment.lambda$initBrands$4$BrandsFragment(BrandsFragment.java:75)
at com.unicomg.proserve.ui.main.fragments.brands.-$$Lambda$BrandsFragment$pny4rYwzqdcDuB9NcgZbiyK2Ick.onListFragmentInteraction(Unknown Source:2)
at com.unicomg.proserve.ui.main.fragments.brands.BrandsAdapter.lambda$onBindViewHolder$0$BrandsAdapter(BrandsAdapter.java:74)
at com.unicomg.proserve.ui.main.fragments.brands.-$$Lambda$BrandsAdapter$NWl2ZJhVqEGxSaOEOsJQCc9r7Po.onClick(Unknown Source:6)
at android.view.View.performClick(View.java:6291)
at android.view.View$PerformClick.run(View.java:24931)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)