自定义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);完成显示数据的功能
- 自定义Adapter
- 自定义Adapter
- 自定义Adapter
- 自定义adapter
- 自定义Adapter
- 自定义Adapter
- 自定义Adapter
- 自定义adapter
- 自定义Adapter
- 自定义adapter
- 自定义Adapter
- 自定义Adapter
- 自定义adapter
- 自定义Adapter
- 自定义adapter
- 自定义adapter
- listview 自定义Adapter
- listview 自定义Adapter
- 秒杀的问题
- mysql
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap
- 设计模式之结构型模式
- git shell
- 自定义adapter
- Lua数据结构 — Table(三)
- linux crontab usage
- linux安装mysql
- 深入Java集合学习系列:ArrayList的实现原理
- linux安装网卡驱动
- 避免Fragment在切换时总是重新onCreateView的问题
- Android ListView A-Z侧边栏字母排序,点击处扭曲成半圆
- linux firefox添加搜索工具栏