您的位置:首页 > 移动开发 > Android开发

自定义baseAdapter的比较好的一种方法

2016-05-18 19:43 337 查看
在网上学习到一种定义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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android