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
}