zoukankan      html  css  js  c++  java
  • Listview 多个ViewHolder实现

    简单代码示例:

    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;
    	}
    }
    

      

  • 相关阅读:
    使用SharePoint PeopleEditor控件
    python快排的三种写法
    js获取浏览器屏幕高度、宽度等
    Spring总结> 第一结 概述
    js设置body高度、宽度为浏览器窗口高度、宽度
    简单的Spring调用jdbc.porperties配置信息,以mysql为例
    SSM(Spring + Spring MVC + MyBatis)整合
    【原创】MS SQL2005 存储过程分页(简洁型)后续完善更新中......
    【转载】动态sql语句基本语法
    Provider模式Demo
  • 原文地址:https://www.cnblogs.com/spring87/p/4621176.html
Copyright © 2011-2022 走看看