写recyclerview的实际方法是什么

时间:2019-05-03 07:51:27

标签: android android-recyclerview

我看到了许多编写Recyclerview的方法。但是我不知道在性能方面的最佳实践方法是什么。

我有两种编写Recyclerview的方法,它们是相同还是不同?

第一种方法是将其写入单独的Adapter类

Adapter.java

public class Adapter  extends RecyclerView.Adapter<Adapter.MyViewHolder> {

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    return null;
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {

}

@Override
public int getItemCount() {
    return 0;
}

class MyViewHolder extends RecyclerView.ViewHolder{
    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
    }
}
}

第二种方法是在MainActivity或Fragment中这样写

 recyclerView.setAdapter(new RecyclerView.Adapter() {
         @NonNull
         @Override
         public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
             return null;
         }

         @Override
         public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
         }

         @Override
         public int getItemCount() {
             return 0;
         }
     });

}
public class MyViewHolder extends RecyclerView.ViewHolder{
    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
    }
}

2 个答案:

答案 0 :(得分:0)

适配器应作为单独的类实现,因为它使重用变得更容易:

var dwidth = $(window).width();

$(window).resize(function(){
    var wwidth = $(window).width();
    if(dwidth!==wwidth){
         dwidth = $(window).width();
         console.log('Width changed');
    }
});

比起您的活动/片段,您可以像这样使用它:

 public class YourAdapter extends RecyclerView.Adapter<Adapter.MyViewHolder> {

 private ArrayList<YourModel> list = new ArrayList();

public YourAdapter(ArrayList<YourModel> list){
 this.list = list;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    //return the viewholder
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
 //deal with data
}

@Override
public int getItemCount() {
    //return the list number
}

class MyViewHolder extends RecyclerView.ViewHolder{
    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
      //bind the views
    }
}
}

这样,您可以在多个活动/片段中重复使用它。应该首选这种可重复使用的代码模式,因为您不必将类作为匿名类创建多次(如果需要)。

答案 1 :(得分:-1)

最好的方法是在主类之外设置适配器类,因为您的解释只是使用第一类