Android 更好的实践:重用RecycleServiceAdapter还是为每个应用程序分别使用一个实例?

Android 更好的实践:重用RecycleServiceAdapter还是为每个应用程序分别使用一个实例?,android,android-recyclerview,recyclerview-layout,Android,Android Recyclerview,Recyclerview Layout,我在viewpager的一张幻灯片上看到了“传入”片段。此片段包含一个用自定义相对布局填充的回收视图。LinearLayoutManager方向是垂直的 我有第二个片段“发现”在下一张幻灯片上的上述viewpager。“查找”将由两个recyclerviews组成。它将有一个水平循环视图,其中填充卡片视图(快速加载个人资料图片)。在这下面,我加载另一个recyclerview的速度更慢,它带有一个自定义相对布局,与“传入”片段中的情况相同 这有意义吗?我将进一步阐述: 问题是对于这三个recyc

我在
viewpager
的一张幻灯片上看到了“传入”片段。此片段包含一个用
自定义相对布局填充的
回收视图
LinearLayoutManager
方向是垂直的

我有第二个片段“发现”在下一张幻灯片上的上述viewpager。“查找”将由两个recyclerviews组成。它将有一个
水平循环视图
,其中填充
卡片视图
(快速加载个人资料图片)。在这下面,我加载另一个
recyclerview
的速度更慢,它带有一个
自定义相对布局
,与“传入”片段中的情况相同

这有意义吗?我将进一步阐述:

问题是对于这三个recyclerviews,我是否应该为每一个都声明一个新的
RecyclerAdapter
?我问的原因是,它们都有未知的可变项目计数。

这是我为“传入”准备的RecyclerAdapter:

公共类RecyclerAdapter扩展了RecyclerView.Adapter{ 私有上下文; 公共回收器适配器(上下文、列表项){ mContext=上下文; } 公共静态类ViewHolder扩展了RecyclerView.ViewHolder{ 公共视图持有者(视图v){ 超级(五); //定义视图中的所有零部件 } } @凌驾 public ViewHolder onCreateViewHolder(视图组父级,int-viewType){ LayoutInflater mInf=LayoutInflater.from(mContext); 视图customView=mInf.充气(R.layout.item\u layout\u incoming,parent,false); 最终视图持有者vh=新视图持有者(自定义视图); 返回vh; } @凌驾 public int getItemCount(){return 6;}//这是临时的;将是变量 @凌驾 公共无效onBindViewHolder(ViewHolder,int位置){ //替换内容 }
根据我的标准,我是否应该为我的
水平cardview回收视图
创建另一个适配器?这似乎是重复的,但是,否则,我将如何处理膨胀的
cardview
项目布局


似乎应该有一个简单的方法来实现这一点,而不会影响性能。感谢您使用了片段,因此您将创建该类的两个对象。这是一样的。您只需减少将新类加载到内存中的任务,然后创建其对象,从而减少编译器负载。 由于两个原因,最好使用两个不同的
适配器

  • 你的代码会变得很难看,我是说太拥挤了,如果 其他条件
  • 将来,如果您需要更改布局中的某些内容,请再次更改它 如果使用相同的适配器类,将影响所有对象

  • 因此,我的建议是编写开发人员友好的代码并创建两个类。

    谢谢,伙计。这很有意义。我将为我的卡视图创建一个新的recyclerview。我是否应该为Recycler1和3(具有自定义视图)重复使用相同的适配器?如果它们都具有相同的数据和视图(可以忽略小的更改),那么可以。
    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
        }