Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与多个RecyclerViews合作_Java_Android - Fatal编程技术网

Java 与多个RecyclerViews合作

Java 与多个RecyclerViews合作,java,android,Java,Android,在我的android应用程序中,我使用了几个外观和要求完全不同的RecyclerViews。随着人数的增加,我想把他们统一起来。所以我的问题是,对于具有不同需求的recyclerviews,我应该使用不同的适配器(布局文件不能相同)还是一个通用适配器,如下所示: public class DataAdapter extends RecyclerView.Adapter < DataAdapter.ViewHolder > { variables... public DataAda

在我的android应用程序中,我使用了几个外观和要求完全不同的RecyclerViews。随着人数的增加,我想把他们统一起来。所以我的问题是,对于具有不同需求的recyclerviews,我应该使用不同的适配器(布局文件不能相同)还是一个通用适配器,如下所示:

public class DataAdapter extends RecyclerView.Adapter < DataAdapter.ViewHolder > {
 variables...
 public DataAdapter(Context context) {

 }

 @Override
 public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
  //   if(the_condition_to check_which_recycler_view)
  //   inflate a;
  //   else if(other_condition)
  //   inflate b;
  //   else ...
  return xyz;
 }
 @Override
 public void onBindViewHolder(final ViewHolder viewHolder, int i) {
  // if(the_condition_to check_which_recycler_view)
  //       do this;
  //       else if(other_condition)
  //       do this;
  //       else ...
 }
 @Override
 public int getItemCount() {
  return xyz;
 }

 public class ViewHolder extends RecyclerView.ViewHolder {
  //All Views Declared Here
  public ViewHolder(View view) {
   super(view);
   //AllViewsDefinedHere
  }
 }
}
公共类DataAdapter扩展了RecyclerView.Adapter{
变量。。。
公共数据适配器(上下文){
}
@凌驾
public DataAdapter.ViewHolder onCreateViewHolder(视图组视图组,int i){
//如果(检查哪一个回收者的条件)
//充气;
//else if(其他条件)
//充气b;
//否则。。。
返回xyz;
}
@凌驾
公共无效onBindViewHolder(最终ViewHolder ViewHolder,int i){
//如果(检查哪一个回收者的条件)
//这样做;
//else if(其他条件)
//这样做;
//否则。。。
}
@凌驾
public int getItemCount(){
返回xyz;
}
公共类ViewHolder扩展了RecyclerView.ViewHolder{
//此处声明的所有视图
公共视图持有者(视图){
超级(视图);
//所有视图都显示在这里
}
}
}

我想问的另一件事是,我见过各种库,比如FastAdapter,它们说它们简化了整个适配器的工作,但我不明白它们是如何起作用的。手动适配器方法是否存在一些问题?

您可以按照模型视图演示器的方法来满足您的需求。具有
BaseViewHolder
BaseAdapter
以及不同的
secondaryviewholder
扩展
BaseViewHolder
,用于每种视图类型

由于您说布局文件不能相同,
secondaryviewholder
将是独立的,并且将包含相应的布局文件

你可以通过阅读了解更多细节


你可以找到完整的代码

你可以按照MVP方法,创建一个
BaseViewHolder
和一个
BaseAdapter
@AyushKhare你能提前提供一些示例代码或帮助链接吗?我在回答中提供了链接,这不是一回事。有这么多不同的类,虽然扩展。有什么好处吗?这样我们就可以使用不同的布局为不同的数据类型提供不同的视图持有者。您的代码结构将更加干净