Android 不同类型item的listview
来源:互联网 发布:playclub大神捏脸数据 编辑:程序博客网 时间:2024/06/05 03:54
Android 经常有很多时候会有不同类型的item的listview需求,下面类似于像聊天对话框的界面adapter。
public class AdviceAdapter extends BaseAdapter { private final static String THIS_FILE = "AdviceAdapter"; private final static int TYPE_SERVICE = 1; private final static int TYPE_USER = 0; private final static int TYPE_COUNT = 2; private Context mContext; private List<adviceinfo.AdviceInfo> mList; protected Fragment mFragment; private adviceinfo.AdviceInfo info; public AdviceAdapter(Activity mContext, List<adviceinfo.AdviceInfo> list) { this.mContext = mContext; this.mList = list; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; } public void addList(List<adviceinfo.AdviceInfo> list){ mList.addAll(list); notifyDataSetChanged(); } public void clearList(){ mList.clear(); notifyDataSetChanged(); } @Override public int getViewTypeCount() { return TYPE_COUNT; } @Override public int getItemViewType(int position) { //type一定要从0开始,否则会报数组越界异常 if ("1".equals(mList.get(position).getContSide())) { return TYPE_USER;// 用户 }else{ return TYPE_SERVICE;// 客服 } } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder1 = null; ViewHolder holder2 = null; int currentType; info = mList.get(position); currentType = getItemViewType(position)+1; if (convertView == null) { if(currentType == 2) { holder2 = new ViewHolder(); LayoutInflater mInflater = LayoutInflater.from(mContext); convertView = mInflater.inflate(R.layout.item_advice_service, null); holder2.content = (TextView) convertView.findViewById(R.id.ask_content_service); holder2.time = (TextView) convertView.findViewById(R.id.tv_advice_item_time_service); convertView.setTag(R.id.tag_second,holder2); }else { holder1 = new ViewHolder(); LayoutInflater mInflater1 = LayoutInflater.from(mContext); convertView = mInflater1.inflate(R.layout.item_advice_user, null); holder1.time = (TextView) convertView.findViewById(R.id.tv_advice_item_time_user); holder1.content = (TextView) convertView.findViewById(R.id.ask_content_user); convertView.setTag(R.id.tag_first,holder1); } }else{ if(currentType == 2) { holder2 = (ViewHolder) convertView.getTag(R.id.tag_second); }else { holder1 = (ViewHolder) convertView.getTag(R.id.tag_first); } } if(currentType == 2) { if(info.getFeedBackCont() != null ) holder2.content.setText(info.getFeedBackCont()); else holder2.content.setText(""); if(DateTimeUtils.getLockUnLockTime(info.getCreateDate()) !=null ) holder2.time.setText(DateTimeUtils.getLockUnLockTime(info.getCreateDate())); else holder2.time.setText(""); }else{ if(info.getFeedBackCont() != null ) holder1.content.setText(info.getFeedBackCont()); else holder1.content.setText(""); if(DateTimeUtils.getLockUnLockTime(info.getCreateDate()) !=null ) holder1.time.setText(DateTimeUtils.getLockUnLockTime(info.getCreateDate())); else holder1.time.setText(""); } return convertView; } private static class ViewHolder { TextView content; TextView time; }}
0 0
- Android 不同类型item的listview
- Android ListView实现不同类型的item
- Listview 设置不同类型的item
- Android开发之ListView不同类型item的展示
- listview如何包含不同类型的Item
- listview如何包含不同类型的Item
- android 设计模式之Listview不同类型Item利用工厂模式的复用
- RecycleView显示不同类型的Item
- RecycleView加载不同类型的Item
- RecycleView的不同类型Item点击事件
- android的ListView点击item使item展开的做法
- 关于Android的ListView的Item选中
- Android 清空ListView 的Item方法
- Android中ListView组件的Item拖动
- android给listview的item设定高度
- android给listview的item设定高度
- Android 保留listview item的选中样式
- android之listview的item不可点击
- SpringBoot第二讲 利用Spring Data JPA实现数据库的访问(一)
- SVDD(Support Vector Domain Description) 支持向量数据域描述(1)
- Python学习杂记
- CardView开发中需要注意的地方
- zabbix触发器参数
- Android 不同类型item的listview
- java中关于Collection与Map
- 身份证号码有效性检测
- Android App性能优化之内存优化实践
- Apache Kylin集群部署
- U盘还原
- 前端面试题
- 前端知识(行内元素与块级元素)
- springmvc常用注解标签详解