更好的做法:重用 RecyclerViewAdapter 或为每个单独的实例?
Better practice: reusing RecyclerViewAdapter or separate instance for each?
我在 viewpager
的一张幻灯片上有片断 "Incoming"。此片段包含填充了 custom-relative-layouts
的 RecyclerView
。 LinearLayoutManager
方向为垂直。
我在上述 viewpager 的下一张幻灯片上有第二个片段 "Find"。 "Find" 将包含两个回收视图。它将有一个 Horizontal recyclerview
填充 cardviews
(快速加载个人资料图片)。在此之下,我正在更慢地加载另一个 recyclerview
和 custom-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
创建另一个适配器?这似乎是重复的,但除此之外,我将如何处理膨胀 cardview
或 item_layout_incoming
?
似乎应该有一个 DRY 方法来做到这一点,而不影响性能。谢谢
您正在使用片段,因此您将创建该 class 的 2 个对象。所以这是一回事。您只需通过减少将新 class 加载到内存然后创建其对象的任务来减少编译器负载。
由于两个原因,最好使用两个不同的 Adapter
。
- 你的代码会变得丑陋我的意思是非常拥挤,如果
其他条件。
- 将来,如果您需要更改布局中的某些内容,请再次更改
如果相同的适配器 class.
将影响所有对象
所以我的建议是编写对开发人员友好的代码并创建两个 classes。
我在 viewpager
的一张幻灯片上有片断 "Incoming"。此片段包含填充了 custom-relative-layouts
的 RecyclerView
。 LinearLayoutManager
方向为垂直。
我在上述 viewpager 的下一张幻灯片上有第二个片段 "Find"。 "Find" 将包含两个回收视图。它将有一个 Horizontal recyclerview
填充 cardviews
(快速加载个人资料图片)。在此之下,我正在更慢地加载另一个 recyclerview
和 custom-relative-layout
,与 "incoming" 片段中的相同。
有道理吗?我再详细说一下:
问题是这三个recyclerviews,我是否应该为每个声明一个新的RecyclerAdapter
?我问的原因是他们都有未知变量 item_counts.
这是我为 "Incoming":
使用的 RecyclerAdapterpublic 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
创建另一个适配器?这似乎是重复的,但除此之外,我将如何处理膨胀 cardview
或 item_layout_incoming
?
似乎应该有一个 DRY 方法来做到这一点,而不影响性能。谢谢
您正在使用片段,因此您将创建该 class 的 2 个对象。所以这是一回事。您只需通过减少将新 class 加载到内存然后创建其对象的任务来减少编译器负载。
由于两个原因,最好使用两个不同的 Adapter
。
- 你的代码会变得丑陋我的意思是非常拥挤,如果 其他条件。
- 将来,如果您需要更改布局中的某些内容,请再次更改 如果相同的适配器 class. 将影响所有对象
所以我的建议是编写对开发人员友好的代码并创建两个 classes。