更好的做法:重用 RecyclerViewAdapter 或为每个单独的实例?

Better practice: reusing RecyclerViewAdapter or separate instance for each?

我在 viewpager 的一张幻灯片上有片断 "Incoming"。此片段包含填充了 custom-relative-layoutsRecyclerViewLinearLayoutManager 方向为垂直。

我在上述 viewpager 的下一张幻灯片上有第二个片段 "Find"。 "Find" 将包含两个回收视图。它将有一个 Horizontal recyclerview 填充 cardviews (快速加载个人资料图片)。在此之下,我正在更慢地加载另一个 recyclerviewcustom-relative-layout,与 "incoming" 片段中的相同。

有道理吗?我再详细说一下:

问题是这三个recyclerviews,我是否应该为每个声明一个新的RecyclerAdapter?我问的原因是他们都有未知变量 item_counts.

这是我为 "Incoming":

使用的 RecyclerAdapter
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
    private Context mContext;

    public RecyclerAdapter(Context context, List<Incoming> items) {
        mContext = context;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public ViewHolder(View v) {
            super(v);
            // Define all of the components in the view
        }

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        LayoutInflater mInf = LayoutInflater.from(mContext);
        View customView = mInf.inflate(R.layout.item_layout_incoming, parent, false);

        final ViewHolder vh = new ViewHolder(customView);

        return vh;
    }

    @Override
    public int getItemCount(){ return 6; } // THIS IS TEMPORARY; WILL BE VARIABLE

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        // Replace contents
    }

根据我的标准,我是否应该为我的 horizontal-cardview-recyclerview 创建另一个适配器?这似乎是重复的,但除此之外,我将如何处理膨胀 cardviewitem_layout_incoming?

似乎应该有一个 DRY 方法来做到这一点,而不影响性能。谢谢

您正在使用片段,因此您将创建该 class 的 2 个对象。所以这是一回事。您只需通过减少将新 class 加载到内存然后创建其对象的任务来减少编译器负载。 由于两个原因,最好使用两个不同的 Adapter

  1. 你的代码会变得丑陋我的意思是非常拥挤,如果 其他条件。
  2. 将来,如果您需要更改布局中的某些内容,请再次更改 如果相同的适配器 class.
  3. 将影响所有对象

所以我的建议是编写对开发人员友好的代码并创建两个 classes。