首页 > 解决方案 > 使用一个适配器的多个回收器视图

问题描述

我有一个应用程序,我想在应用程序的不同部分使用 recyclerviews,我正在考虑为相同的两个(或更多)recyclerviews 使用相同的适配器,我认为这将是一个好习惯,或者我错了最好为应用程序中的每个回收站视图制作一个新的适配器?

这是我的适配器的代码:

public class RecyclerViewAdapter extends RecyclerView.Adapter <RecyclerViewAdapter.MyViewHolder> {

private ArrayList<Task> list;
//This is the list of the second recyclerview which I want to implement
private ArrayList<String> categories;
private OnItemListener mOnItemListener;

RecyclerViewAdapter(ArrayList<Task> list, OnItemListener onItemListener)
{
    this.list = list;
    this.mOnItemListener = onItemListener;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    TextView textView = (TextView) LayoutInflater.from(parent.getContext()).inflate(R.layout.single_view, parent, false);

    return new MyViewHolder(textView, mOnItemListener);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {

    holder.textView.setText(list.get(position).getTaskName());
}

@Override
public int getItemCount() {
    return list.size();
}

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
    TextView textView;
    OnItemListener onItemListener;

    MyViewHolder(@NonNull View itemView, OnItemListener onItemListener) {
        super(itemView);

        textView = itemView.findViewById(R.id.singleView);
        this.onItemListener = onItemListener;

        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v)
    {
        onItemListener.onItemClick(getAdapterPosition());
    }
}

public interface OnItemListener
{
    void onItemClick(int position);
}
}

那么我将如何去做,以便它可以根据应用程序中的哪个 recyclerview 正在设置/初始化适配器进行切换,以便getItemCount例如返回大小categories而不是list等等。

标签: javaandroidlistandroid-recyclerview

解决方案


推荐阅读