自定义adapter

来源:互联网 发布:plc编程题目 编辑:程序博客网 时间:2024/04/30 19:51

自定义Adapter

首先新建一个类MyAdapter继承BaseAdapter

完成构造函数,传入当前的context对象和要显示的数据源

public MyAdapter(Context context, List<ChatMessage> datas) {
inflater = LayoutInflater.from(context);
this.mDatas = datas;
}

完成如下

   //listVIew中将要显示的条目数

       @Override
public int getCount() {
// TODO Auto-generated method stub
return mDatas.size();
}

//获得第几个位置的数据
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mDatas.get(position);
}

//获得位置
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

//得到要显示的listView中不同类型条目的类型
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
ChatMessage chatMessage = (ChatMessage) getItem(position);
if (chatMessage.getType() == Type.FROMMSG) {
return 0;
} else {
return 1;
}
}

//得到listView中所有要显示条目类型总数
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}


//下面是最终要的方法,获得当前条目的View

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
ChatMessage chatMessage = (ChatMessage) getItem(position);
if (convertView == null) {
if (getItemViewType(position) == 1) {
convertView = inflater.inflate(R.layout.tomsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.msg = (TextView) convertView
.findViewById(R.id.tv_msgsend_msg);
viewHolder.time = (TextView) convertView
.findViewById(R.id.tv_msgsend_time);
} else {
convertView = inflater.inflate(R.layout.frommsg, parent, false);
viewHolder = new ViewHolder();
viewHolder.msg = (TextView) convertView
.findViewById(R.id.tv_msgreceive_msg);
viewHolder.time = (TextView) convertView
.findViewById(R.id.tv_msgreceive_time);
}
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

//设置数据
viewHolder.msg.setText(chatMessage.getMsg());
viewHolder.time.setText(chatMessage.getTime());

return convertView;
}


class ViewHolder {
TextView time;
TextView msg;
}

这样就完成了自定义Adapter的编写

在显示数据时,新建一个MyAdapter对象将数据源传入

再调用listView.setAdapter(adapter);完成显示数据的功能

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 棉麻的衣服发硬怎么办 新衣服太硬怎么办雪纺 衣服硬的咯人怎么办 脖子上的勒痕怎么办 腿上容易出现勒痕怎么办 身上总有内裤印怎么办 内裤穿出了印怎么办 饮水机热水口不出水怎么办 饮水机热水口出水小怎么办 新饮水机热水口出水小怎么办 白钢水桶中间支撑怎么办 17岁想长高应该怎么办 身子瘦但脸胖怎么办 减肥只瘦了胸是怎么办 减肥把胸瘦了怎么办 脸又大又圆怎么办 想长高又想减肥怎么办 孩子做作业精力不集中怎么办 写作业老要睡觉怎么办 孩子写作业精神不集中怎么办 小孩精神不集中要怎么办 注意力不集中上课走神怎么办 注意力不集中总是走神怎么办 孩子注意力不集中走神怎么办 上课老走神注意力不集中怎么办 注意力不集中老走神怎么办 7岁儿童视力0.6怎么办 三岁宝宝注意力不集中怎么办 四岁宝宝注意力不集中怎么办 一直在想一件事怎么办 买的家具味道大怎么办 买的木床有味道怎么办 宝宝拍胸片衣服有扣子怎么办 前扣内衣扣子坏了怎么办 运动内衣穿上平胸怎么办 文胸的海绵变形了怎么办 文胸背部松紧变形了怎么办 黑色裤子被漂白水漂红了怎么办 黑色裤子晒红了怎么办 黑色裤子泛红了怎么办 黑色裤子洗红了怎么办