android ExpandableListView實現不同的布局


最近有一個需求要實現listview的不同布局!因為有好幾上header,就想到了ExpandableListView!

這個是我的需求模型:看圖(自己畫的)

然后百度~google~發帖~總算有點效果了!其他的就不多說了。直接主要代碼講解--

 

主要是適配器的部分:ExpandableListAdapter.jave

 

 

public class ExpandableListAdapter extends BaseExpandableListAdapter {
	// Client Status
	private String mClient_id;
	private String mClient_name;
	private String mClient_realid;
	private String mClient_totally;
	// Stocks's product
	private String mStocks;
	private String mStocks_name;
	private String mStocks_counts;
	private String mStocks_cost;
	private String mStocks_now;
	private String mStocks_mark;
	// Moreprofit's product
	private String mMoreprofit;
	private String mMoreprofit_name;
	private String mMoreprofit_counts;
	private String mMoreprofit_rate;
	private String mMoreprofit_years;
	private String mMoreprofit_mark;

	// Pes's product
	private String mPes;
	private String mPes_projects;
	private String mPes_invest_amount;
	private String mPes_mark;

	private Context mContext;

	private final int VIEW_TYPE = 3;
	private final int TYPE_1 = 0;
	private final int TYPE_2 = 1;
	private final int TYPE_3 = 2;

	private LayoutInflater mLayoutInflater;

	// private HandleClick mHandleClick;
	private String[] mProduct_what = new String[] { "xx類產品", "xx收益類產品", "xx類投資" };
	private String[][] mProduct_what_items = {
			{ "產品名稱", "持有數量", "買入成本", "當前凈值", "備注" },
			{ "產品名稱", "持有數量", "年收益率", "期限", "備注" }, { "項目", "投資金額", "備注" } };

	public ExpandableListAdapter(Context mContext) {
		mLayoutInflater = LayoutInflater.from(mContext);
		this.mContext = mContext;
	}

	public ExpandableListAdapter(Context mContext, String mClient_id,
			String mClient_name, String mClient_realid, String mClient_totally,
			String mStocks, String mStocks_name, String mStocks_counts,
			String mStocks_cost, String mStocks_now, String mStocks_mark,
			String mMoreprofit, String mMoreprofit_name,
			String mMoreprofit_counts, String mMoreprofit_rate,
			String mMoreprofit_years, String mMoreprofit_mark, String mPes,
			String mPes_projects, String mPes_invest_amount, String mPes_mark) {
		// super();
		this.mClient_id = mClient_id;
		this.mClient_name = mClient_name;
		this.mClient_realid = mClient_realid;
		this.mClient_totally = mClient_totally;
		this.mStocks = mStocks;
		this.mStocks_name = mStocks_name;
		this.mStocks_counts = mStocks_counts;
		this.mStocks_cost = mStocks_cost;
		this.mStocks_now = mStocks_now;
		this.mStocks_mark = mStocks_mark;
		this.mMoreprofit = mMoreprofit;
		this.mMoreprofit_name = mMoreprofit_name;
		this.mMoreprofit_counts = mMoreprofit_counts;
		this.mMoreprofit_rate = mMoreprofit_rate;
		this.mMoreprofit_years = mMoreprofit_years;
		this.mMoreprofit_mark = mMoreprofit_mark;
		this.mPes = mPes;
		this.mPes_projects = mPes_projects;
		this.mPes_invest_amount = mPes_invest_amount;
		this.mPes_mark = mPes_mark;
		this.mContext = mContext;

		mLayoutInflater = LayoutInflater.from(mContext);
	}

	@Override
	public Object getChild(int arg0, int arg1) {
		return null;
	}

	@Override
	public long getChildId(int groupPosition, int childPosition) {
		return 0;
	}

	public int getItemViewType(int groupPosition) {
		int p = groupPosition;
		if (p == 0) {
			return TYPE_1;
		} else if (p == 1) {
			return TYPE_2;
		} else if (p == 2) {
			return TYPE_3;
		} else {
			return TYPE_1;
		}
	}

	@Override
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		int type = getItemViewType(groupPosition);
		switch (type) {
		case TYPE_1:
			convertView = mLayoutInflater.inflate(R.layout.item_table, null);
			TextView mProduct_name_1 = (TextView) convertView
					.findViewById(R.id.product_name);
			TextView mProduct_counts_1 = (TextView) convertView
					.findViewById(R.id.product_count);
			TextView mProduct_cost_1 = (TextView) convertView
					.findViewById(R.id.product_cost);
			TextView mProduct_status_1 = (TextView) convertView
					.findViewById(R.id.product_status);
			TextView mProduct_mark_1 = (TextView) convertView
					.findViewById(R.id.product_mark);
			//這里是自定義一個子item的,當position==0時顯示標題欄
			switch (childPosition) {
			case 0:
				mProduct_name_1.setText(mProduct_what_items[0][0]);
				mProduct_counts_1.setText(mProduct_what_items[0][1]);
				mProduct_cost_1.setText(mProduct_what_items[0][2]);
				mProduct_status_1.setText(mProduct_what_items[0][3]);
				mProduct_mark_1.setText(mProduct_what_items[0][4]);
				break;

			default:
				mProduct_name_1.setText("888");
				mProduct_counts_1.setText("888");
				mProduct_cost_1.setText("888");
				mProduct_status_1.setText("888");
				mProduct_mark_1.setText("888");
				break;

			}
			break;

		case TYPE_2:
			convertView = mLayoutInflater.inflate(R.layout.item_table, null);
			TextView mProduct_name_2 = (TextView) convertView
					.findViewById(R.id.product_name);
			TextView mProduct_counts_2 = (TextView) convertView
					.findViewById(R.id.product_count);
			TextView mProduct__rate_2 = (TextView) convertView
					.findViewById(R.id.product_cost);
			TextView mProduct__years_2 = (TextView) convertView
					.findViewById(R.id.product_status);
			TextView mProduct_mark_2 = (TextView) convertView
					.findViewById(R.id.product_mark);
			//這里是自定義一個子item的,當position==0時顯示標題欄
			switch (childPosition) {
			case 0:
				mProduct_name_2.setText(mProduct_what_items[1][0]);
				mProduct_counts_2.setText(mProduct_what_items[1][1]);
				mProduct__rate_2.setText(mProduct_what_items[1][2]);
				mProduct__years_2.setText(mProduct_what_items[1][3]);
				mProduct_mark_2.setText(mProduct_what_items[1][4]);
				break;

			default:
				mProduct_name_2.setText("888");
				mProduct_counts_2.setText("888");
				mProduct__rate_2.setText("888");
				mProduct__years_2.setText("888");
				mProduct_mark_2.setText("888");
				break;
			}

			break;
		case TYPE_3:
			convertView = mLayoutInflater.inflate(R.layout.item_table_p, null);
			TextView mProject_name_3 = (TextView) convertView
					.findViewById(R.id.project_name);
			TextView mProject_invest_amount_3 = (TextView) convertView
					.findViewById(R.id.project_invest_amount);
			TextView mProject_mark = (TextView) convertView
					.findViewById(R.id.project_mark);
			
			//這里是自定義一個子item的,當position==0時顯示標題欄
			switch (childPosition) {
			case 0:
				mProject_name_3.setText(mProduct_what_items[2][0]);
				mProject_invest_amount_3.setText(mProduct_what_items[2][1]);
				mProject_mark.setText(mProduct_what_items[2][2]);
				break;
			default:

				mProject_name_3.setText("888");
				mProject_invest_amount_3.setText("888");
				mProject_mark.setText("888");
				break;
			}

			break;
		}

		return convertView;
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return 1;
	}

	@Override
	public Object getGroup(int groupPosition) {
		return null;
	}

	@Override
	public int getGroupCount() {
		return mProduct_what.length;
		// return 0;
	}

	@Override
	public long getGroupId(int groupPosition) {
		return 0;
	}

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		int type = getItemViewType(groupPosition);
		switch (type) {
		case TYPE_1:
			convertView = mLayoutInflater.inflate(R.layout.header_table, null);
			TextView mProduct_what_1 = (TextView) convertView
					.findViewById(R.id.product_what_1);

			mProduct_what_1.setText(mProduct_what[groupPosition]);

			break;

		case TYPE_2:
			convertView = mLayoutInflater
					.inflate(R.layout.header_table_f, null);
			TextView mProduct_what_2 = (TextView) convertView
					.findViewById(R.id.product_what_2);

			mProduct_what_2.setText(mProduct_what[groupPosition]);

			break;
		case TYPE_3:
			convertView = mLayoutInflater
					.inflate(R.layout.header_table_p, null);
			TextView mProject_what_3 = (TextView) convertView
					.findViewById(R.id.project_what_3);

			mProject_what_3.setText(mProduct_what[groupPosition]);

			break;
		}
		return convertView;
	}

	@Override
	public boolean hasStableIds() {
		return false;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return false;
	}

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM