我看到了许多编写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);
}
}
答案 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)
最好的方法是在主类之外设置适配器类,因为您的解释只是使用第一类