持有人 vs RecylerView.ViewHolder
Holder vs RecylerView.ViewHolder
我有 ListView
和 Adapter
,也用 holder。但后来我读到 recyclerView.ViewHolder
并且现在很困惑,它与我现在一直在使用的那个不同吗?我的意思是出于优化目的,我想知道如果不使用 recyclerView
.
仅使用 holder 是否不够好
public class NewsAdapter extends ArrayAdapter<News> {
Context context;
List<News> myList;
public NewsAdapter(Context context, int resource, List<News> objects) {
super(context, resource, objects);
this.context = context;
this.myList = objects;
}
@Override
public News getItem(int position) {
if(myList != null)
return myList.get(position);
return null;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_news, null);
holder = new NewsAdapter.Holder();
holder.title = (TextView)convertView.findViewById(R.id.textViewTitle);
holder.datePosted = (TextView)convertView.findViewById(R.id.textViewDate);
holder.imageView = (ImageView)convertView.findViewById(R.id.imageViewThumbnailpic);
convertView.setTag(holder);
}else{
holder = (Holder)convertView.getTag();
}
News news = getItem(position);
holder.title.setText(news.getTitle());
holder.datePosted.setText(news.getDatePost());
Picasso.with(context)
.load(news.getImgUrl())
.placeholder(R.drawable.coin25)
.error(R.drawable.hnbspic)
.into(holder.imageView);
return convertView;
}
private class Holder{
ImageView imageView;
TextView title;
TextView datePosted;
}
}
最好使用 Recyclerview,因为它已针对各种场景进行了优化,而不仅仅是针对 View holder 模式,例如它提供了确定项目应如何布局的选项,或者喜欢动画或自定义绘图应该是什么每个 item.You 可以阅读更多 this 中等 post
我有 ListView
和 Adapter
,也用 holder。但后来我读到 recyclerView.ViewHolder
并且现在很困惑,它与我现在一直在使用的那个不同吗?我的意思是出于优化目的,我想知道如果不使用 recyclerView
.
public class NewsAdapter extends ArrayAdapter<News> {
Context context;
List<News> myList;
public NewsAdapter(Context context, int resource, List<News> objects) {
super(context, resource, objects);
this.context = context;
this.myList = objects;
}
@Override
public News getItem(int position) {
if(myList != null)
return myList.get(position);
return null;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView == null){
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_news, null);
holder = new NewsAdapter.Holder();
holder.title = (TextView)convertView.findViewById(R.id.textViewTitle);
holder.datePosted = (TextView)convertView.findViewById(R.id.textViewDate);
holder.imageView = (ImageView)convertView.findViewById(R.id.imageViewThumbnailpic);
convertView.setTag(holder);
}else{
holder = (Holder)convertView.getTag();
}
News news = getItem(position);
holder.title.setText(news.getTitle());
holder.datePosted.setText(news.getDatePost());
Picasso.with(context)
.load(news.getImgUrl())
.placeholder(R.drawable.coin25)
.error(R.drawable.hnbspic)
.into(holder.imageView);
return convertView;
}
private class Holder{
ImageView imageView;
TextView title;
TextView datePosted;
}
}
最好使用 Recyclerview,因为它已针对各种场景进行了优化,而不仅仅是针对 View holder 模式,例如它提供了确定项目应如何布局的选项,或者喜欢动画或自定义绘图应该是什么每个 item.You 可以阅读更多 this 中等 post