Android 将一个适配器用于两个ListView是否是一种良好的做法。。?

Android 将一个适配器用于两个ListView是否是一种良好的做法。。?,android,listview,android-fragments,android-adapter,Android,Listview,Android Fragments,Android Adapter,我有一个列表,我想在两个片段中以不同的方式显示。 这意味着我需要两个ListView(每个片段中一个),但我还需要两个适配器吗?或者我可以简单地为两个列表使用一个适配器,因为当数据更改时,我希望两个列表更新 编辑:以不同方式显示意味着我希望在第一个片段中按字母顺序显示任务,在第二个片段中按日历顺序显示任务 (或者有更简单的方法解决这个问题?) 适配器: public class TasksAdapter extends ArrayAdapter<Task> { public

我有一个列表,我想在两个片段中以不同的方式显示。 这意味着我需要两个ListView(每个片段中一个),但我还需要两个适配器吗?或者我可以简单地为两个列表使用一个适配器,因为当数据更改时,我希望两个列表更新

编辑:以不同方式显示意味着我希望在第一个片段中按字母顺序显示任务,在第二个片段中按日历顺序显示任务

(或者有更简单的方法解决这个问题?)

适配器:

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

试试看。这听起来不是一个好的做法,但你甚至可以试着解释一下“显示不同”的含义?请记住,您可以简单地创建同一适配器类的两个实例,而不必考虑此问题,还可以将当前适配器代码添加到问题中。这可能是最简单的方法,但听起来像是重复,意味着每次列表更改时,我都必须更新这两个适配器。