在网上学习到一种定义baseApdater的一种比较优美的方法,加上最近自己也连续用到几次这个方法,现在归纳整理一下,提升学习:
!!!!!!! 特别注明:该方法不是本人设计,而是本人在一个视频<android必学-baseadapter的使用与优化>>
程序员沟通最有效的语言莫过于代码和注释:
以下是自己的写的一个类
public class CommentAdapter extends BaseAdapter{
private List<CommentBean> data; //数据源
private LayoutInflater inflater;
// 构造函数
public CommentAdapter(Context context,List<CommentBean> list){
data=list; inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO 自动生成的方法存根
return data.size(); //返回数据的大小
}
@Override
public Object getItem(int position) {
// TODO 自动生成的方法存根
return data.get(position); //返回某个特定的数据
}
@Override
public long getItemId(int position) {
// TODO 自动生成的方法存根
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO 自动生成的方法存根
ViewHolder viewHolder;
if(convertView==null){
//若是converview没有缓存过就新建一个
convertView=inflater.inflate(R.layout.comment, null);
//viewHolder也是同理,
viewHolder=new ViewHolder();
viewHolder.comment_main=(TextView) convertView.findViewById(R.id.commentOfMain);
viewHolder.nickName=(TextView) convertView.findViewById(R.id.textView2);
viewHolder.date=(TextView) convertView.findViewById(R.id.textView3);
viewHolder.loc=(TextView) convertView.findViewById(R.id.textView4);
// 标注viewholder,下次方便可以直接取出
convertView.setTag(viewHolder);
}else{
//缓存过就直接取出viewholder
viewHolder=(ViewHolder) convertView.getTag();
}
//对于viewholder的负责的每一个子view赋值
viewHolder.comment_main.setText(data.get(position).getComment());
viewHolder.nickName.setText(data.get(position).getNickName());
viewHolder.date.setText(data.get(position).getDate());
viewHolder.loc.setText(data.get(position).getLoc());
//返回converview
return convertView;
}
private class ViewHolder{
public TextView comment_main;
public TextView nickName;
public TextView date;
public TextView loc;
}
}