Listview 多个ViewHolder实现
2015-07-04 20:05
239 查看
简单代码示例:
package com.edaixi.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; import com.edaixi.activity.R; import com.edaixi.dataset.MyAddressDataSet; public class SelectAddressListAdapter extends BasicAdapter { private MyAddressDataSet mTrueDataSet = null; private MyAddressDataSet mFalseDataSet = null; private Context context; public static int TRUE_TITLE = 1; public static int TRUE_ITEM = 2; public SelectAddressListAdapter(Context mContext, MyAddressDataSet mTrueDataSet, MyAddressDataSet mFalseDataSet) { super(mContext); this.mTrueDataSet = mTrueDataSet; this.mFalseDataSet = mFalseDataSet; this.context = mContext; } @Override public int getCount() { if (mTrueDataSet.size() > 0 && mFalseDataSet.size() > 0) { return mTrueDataSet.size() + mFalseDataSet.size() + 2; } else if (mTrueDataSet.size() == 0 && mFalseDataSet.size() == 0) { return mTrueDataSet.size() + mFalseDataSet.size(); } else { return mTrueDataSet.size() + mFalseDataSet.size() + 1; } } @Override public Object getItem(int position) { if (position == 0) { return null; } else if (position < mTrueDataSet.size() + 1) { return mTrueDataSet.getIndexBean(position); } else { return mFalseDataSet.getIndexBean(position - mTrueDataSet.size() - 2); } } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { if ((mTrueDataSet.size() > 0) && (position == 0)) { return TRUE_TITLE; } else if ((mFalseDataSet.size() > 0) && (position == mTrueDataSet.size() + 1)) { return TRUE_TITLE; } else { return TRUE_ITEM; } } @Override public int getViewTypeCount() { return 3; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolderItem mViewHolder = null; ViewHolderTitle mViewHolderTitle = null; final int _position = position; int viewType = getItemViewType(position); if (convertView == null) { if (viewType == 2) { mViewHolder = new ViewHolderItem(); convertView = View.inflate(context, R.layout.item_address_select, null); mViewHolder.mName = (TextView) convertView .findViewById(R.id.address_item_name); mViewHolder.mPhone = (TextView) convertView .findViewById(R.id.address_item_tel); mViewHolder.mDetailAdd = (TextView) convertView .findViewById(R.id.address_item_text); mViewHolder.mAddLayout = (RelativeLayout) convertView .findViewById(R.id.rl_address_select); convertView.setTag(mViewHolder); } else { mViewHolderTitle = new ViewHolderTitle(); convertView = View.inflate(context, R.layout.address_select_true_tips_title, null); mViewHolderTitle.mTitleName = (TextView) convertView .findViewById(R.id.tv_address_title); convertView.setTag(mViewHolderTitle); } } else { if (viewType == 2) { mViewHolder = (ViewHolderItem) convertView.getTag(); } else { mViewHolderTitle = (ViewHolderTitle) convertView.getTag(); } } if ((mTrueDataSet.size() > 0) && (position == 0)) { mViewHolderTitle.mTitleName.setText("可用地址"); } else if ((mFalseDataSet.size() > 0) && (position == mTrueDataSet.size() + 1)) { mViewHolderTitle.mTitleName.setText("不可用地址"); } else { if (position <= mTrueDataSet.size()) { mViewHolder.mAddLayout.setBackgroundColor(context .getResources().getColor(R.color.white)); mViewHolder.mName.setTextColor(context.getResources().getColor( R.color.text_1)); mViewHolder.mName.setText(mTrueDataSet.getIndexBean( _position - 1).getUsername()); if (mTrueDataSet.getIndexBean(_position - 1).getTel() != null) { mViewHolder.mPhone.setTextColor(context.getResources() .getColor(R.color.text_1)); mViewHolder.mPhone.setText(mTrueDataSet.getIndexBean( _position - 1).getTel()); } mViewHolder.mDetailAdd.setTextColor(context.getResources() .getColor(R.color.text_1)); if (mTrueDataSet.getIndexBean(_position - 1).getAddress() != null) mViewHolder.mDetailAdd.setText(mTrueDataSet.getIndexBean( _position - 1).getCity() + mTrueDataSet.getIndexBean(_position - 1) .getArea() + mTrueDataSet.getIndexBean(_position - 1) .getAddress().trim()); } else { mViewHolder.mAddLayout.setBackgroundColor(context .getResources().getColor(R.color.gray)); mViewHolder.mName.setTextColor(context.getResources().getColor( R.color.falseaddress)); mViewHolder.mName.setText(mFalseDataSet.getIndexBean( position - mTrueDataSet.size() - 2).getUsername()); if (mFalseDataSet.getIndexBean( position - mTrueDataSet.size() - 2).getTel() != null) { mViewHolder.mPhone.setTextColor(context.getResources() .getColor(R.color.falseaddress)); mViewHolder.mPhone.setText(mFalseDataSet.getIndexBean( position - mTrueDataSet.size() - 2).getTel()); } mViewHolder.mDetailAdd.setTextColor(context.getResources() .getColor(R.color.falseaddress)); if (mTrueDataSet.getIndexBean( _position - mTrueDataSet.size() - 2).getAddress() != null) mViewHolder.mDetailAdd.setText(mFalseDataSet.getIndexBean( position - mTrueDataSet.size() - 2).getCity() + mFalseDataSet.getIndexBean( position - mTrueDataSet.size() - 2) .getArea() + mFalseDataSet .getIndexBean( position - mTrueDataSet.size() - 2) .getAddress().trim()); } } return convertView; } private static class ViewHolderItem { private TextView mName; private TextView mPhone; private TextView mDetailAdd; private RelativeLayout mAddLayout; } private static class ViewHolderTitle { private TextView mTitleName; } }
相关文章推荐
- AngularJS Restangular插件的 customOperation 方法
- 第五届四川省职工职业技能大赛决赛计算机程序设计员技术文件
- Installing GCC
- CSS--复习之旅(一)
- leetCode 7. Reverse Integer (数字反转) 解题思路与方法
- 前端工程化
- IZISTORE - OPENCART 自适应主题模板 ABC-0023
- IZISTORE - OPENCART 自适应主题模板 ABC-0023
- Neural Network 反向传播算法(BP Algorithms)推导,无代码
- java网络编程(下)
- Android学习笔记之HttpClient实现Http请求....
- [BOP][Beauty of Programming][MSRA] 从“买票问题”谈起
- Android应用发布的准备——生成渠道包
- js地址下拉列表中全职工作
- POJThe Doors AND NYIST 有趣的问题
- AS语言学习小结笔记
- UVA 1025 A Spy in the Metro
- Discuz 3.1 登陆ucenter验证码错误的解决
- MIT线性代数--向量空间
- 搜索引擎使用整理