Android 将一个适配器用于两个ListView是否是一种良好的做法。。?
我有一个列表,我想在两个片段中以不同的方式显示。 这意味着我需要两个ListView(每个片段中一个),但我还需要两个适配器吗?或者我可以简单地为两个列表使用一个适配器,因为当数据更改时,我希望两个列表更新 编辑:以不同方式显示意味着我希望在第一个片段中按字母顺序显示任务,在第二个片段中按日历顺序显示任务 (或者有更简单的方法解决这个问题?) 适配器:Android 将一个适配器用于两个ListView是否是一种良好的做法。。?,android,listview,android-fragments,android-adapter,Android,Listview,Android Fragments,Android Adapter,我有一个列表,我想在两个片段中以不同的方式显示。 这意味着我需要两个ListView(每个片段中一个),但我还需要两个适配器吗?或者我可以简单地为两个列表使用一个适配器,因为当数据更改时,我希望两个列表更新 编辑:以不同方式显示意味着我希望在第一个片段中按字母顺序显示任务,在第二个片段中按日历顺序显示任务 (或者有更简单的方法解决这个问题?) 适配器: public class TasksAdapter extends ArrayAdapter<Task> { public
public class TasksAdapter extends ArrayAdapter<Task> {
public TasksAdapter(Context context, ArrayList<Task> tasks) {
super(context, 0, tasks);
}
@Override
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
Task task = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_task, parent, false);
}
return convertView;
}
}
公共类TasksAdapter扩展了ArrayAdapter{
公共任务适配器(上下文、ArrayList任务){
超级(上下文,0,任务);
}
@凌驾
公共视图getView(int位置,视图转换视图,@NonNull视图组父级){
任务任务=getItem(位置);
if(convertView==null){
convertView=LayoutInflater.from(getContext()).flate(R.layout.item_任务,父项,false);
}
返回视图;
}
}
是的,如果适配器的构建方式能够容纳您希望在两个片段中使用的数据类型,那么您当然可以使用单个适配器
这取决于您想要完成的具体任务,但以下是一些需要考虑的事项:
- 只需实例化适配器的两个独立实例,并将该实例传递到
ListView
或RecyclerView
的.setAdapter
方法中
- 您可以通过编程方式在适配器中使用不同的视图保持器,查看
getItemViewType()
方法
<> LI>如果适配器中的数据不仅仅是简单的原语,请考虑编写一个模型类来对使用的两种类型的数据进行列表对象。
请注意,您可能应该使用RecyclerView
试试看。这听起来不是一个好的做法,但你甚至可以试着解释一下“显示不同”的含义?请记住,您可以简单地创建同一适配器类的两个实例,而不必考虑此问题,还可以将当前适配器代码添加到问题中。这可能是最简单的方法,但听起来像是重复,意味着每次列表更改时,我都必须更新这两个适配器。