ListView中设置显示每个item对应一个标题栏。item中由图片,内容,箭头组成。

165639_Zskb_1014520.png

显示效果如上图:

adapter:
package com.tianlei.resultadapter;
import java.util.Vector;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.tianlei.test.R;
import com.tianlei.resultadapter.ClassItem;

public class ClassListAdapter extends BaseAdapter {

	private Vector<ClassItem> items;
	private Context context;
	private LayoutInflater mInflater;
	
	public ClassListAdapter(Context context) {
		this.context = context;
		mInflater = LayoutInflater.from(context);
	 	items = new Vector<ClassItem>();
	}
	
	public ClassItem getMessageByIndex(int index) {
		return items.elementAt(index);
	}

	public void addItem(ClassItem item) {
		items.add(item);
		this.notifyDataSetChanged();
	}
	
	/**
	 * 将Item内的对象复制到指定的Vector中
	 * @param messages
	 */
	public void copyItems(Vector<ClassItem> messages){
		if(messages==null){
			messages = new Vector<ClassItem>();
		}
		if(items != null && items.size() > 0){
			for(int i = 0;i < items.size();i++){
				messages.add(items.get(i));
			}
		}
	}

	public void removeAll() {
		items.clear();
		this.notifyDataSetChanged();
	}

	public int getCount() {
		return items.size();
	}

	public ClassItem getItem(int position) {
		return items.get(position);
	}

	public long getItemId(int position) {
		return position;
	}


	public View getView(int position, View convertView, ViewGroup parent) {
		final ViewHolder holder;
		if (convertView == null) {
			convertView = mInflater.inflate(R.layout.class_part_lay, null);
			holder = new ViewHolder();
			// 栏目名称布局
			holder.partLayout = (LinearLayout)convertView.findViewById(R.id.classGroupLayout);
			holder.partId = (TextView) convertView.findViewById(R.id.class_part_id);
			holder.partName = (TextView) convertView.findViewById(R.id.class_part_name);
			holder.className = (TextView) convertView.findViewById(R.id.class_item_name);
			holder.mIcon = (ImageView)convertView.findViewById(R.id.class_item_img);
			
			convertView.setTag(holder);
		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		
		ClassItem classItem = items.get(position);
		if(classItem != null){
			if(classItem.ifTop){
				holder.partLayout.setVisibility(View.VISIBLE);
				holder.partName.setText(classItem.partName);
				holder.className.setText(classItem.className);
			}else{
				holder.partLayout.setVisibility(View.GONE);
				holder.partName.setText(classItem.partName);
				holder.className.setText(classItem.className);
			}
			
			holder.mIcon.setBackgroundResource(R.drawable.default_class_icon);
		}
		return convertView;
	}

	public class ViewHolder {
		LinearLayout partLayout;
		TextView partId;
		TextView partName;
		TextView className;
		ImageView mIcon;
	}
}

2.类 ClassItem.java 设置每个条目的内容

package com.tianlei.resultadapter;

import java.io.Serializable;

public class ClassItem implements Serializable{
	private static final long serialVersionUID = 1L;
	
	public int classId = 0;
	public String classIcon = "";
	public String className = "人";
	public int partId = 0;
	public String partName = "";
	public boolean ifTop = false;
	
	public ClassItem() {
		super();
	}
	
	/**
	 * 
	 * @param classId 数据id
	 * @param className 数据name
	 * @param partId 栏目id
	 * @param partName 栏目name 
	 * @param classIcon 数据图片
	 */
	public ClassItem(int classId, String className, int partId,
			String partName, String classIcon) {
		super();
		this.classId = classId;
		this.className = className;//对应栏目中的数据
		this.partId = partId;    
		this.partName = partName; //对应题目
		this.classIcon = classIcon;
	}
	public int getClassId() {
		return classId;
	}
	public void setClassId(int classId) {
		this.classId = classId;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public int getPartId() {
		return partId;
	}
	public void setPartId(int partId) {
		this.partId = partId;
	}
	public String getPartName() {
		return partName;
	}
	public void setPartName(String partName) {
		this.partName = partName;
	}
	public String getClassIcon() {
		return classIcon;
	}
	public void setClassIcon(String classIcon) {
		this.classIcon = classIcon;
	}
	
	@Override
	public String toString() {
		return "ifTop:::" + ifTop + ":::className:::" + className + ":::partName:::" + partName;
	}
}

3.Activity

package com.tianlei.test;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;

import com.tianlei.resultadapter.ClassListAdapter;
import com.tianlei.resultadapter.ClassItem;
import com.tianlei.test.ComTestActivity.ItemClickEvent;

public class ResultActivity extends Activity implements OnItemClickListener{

	private ListView classItemList;
	private ClassListAdapter classListAdapter;
	private Vector<ClassItem> data;
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.class_list_screen);
        setTitle("评估结果");
		classItemList = (ListView) findViewById(R.id.classItemListView);
		classListAdapter = new ClassListAdapter(this);
		classItemList.setAdapter(classListAdapter);
		
		data = new Vector<ClassItem>();
		
		/**
		 * 这里测试用  如果真实数据可以用我给你的xml数据  
		 */
		ClassItem item1 = new ClassItem(1,"人",1,"已确认","");
		ClassItem item2 = new ClassItem(1,"散养土鸡蛋",2,"未确认","");
		ClassItem item3 = new ClassItem(1,"散养土鸡蛋",2,"未确认","");
		ClassItem item4 = new ClassItem(1,"散养土鸡蛋",3,"已取消","");
		
		data.addElement(item1);
		data.addElement(item2);
		data.addElement(item3);
		data.addElement(item4);
		addAdapterItem(data);
		classItemList.setOnItemClickListener(this);
    }
	
	private void addAdapterItem(Vector<ClassItem> data){
		Vector<ClassItem> classItem = new Vector<ClassItem>();
		classItem.removeAllElements();
		
		ClassItem temp = null;
		Set<Integer> set = new HashSet<Integer>();
		if(data!=null && data.size()>0){
			for(int i=0 ; i<data.size() ; i++){
				temp = data.get(i);// 获取数据
				/*判断是否存在这个partid 如果存在 说明此条数据是在同意个栏目下,
				 * 即是在一个栏目下添加多个条目。
				 */
				if(set.contains(temp.partId)){
					classItem.add(temp); 
				}else{
					temp.ifTop = true;//  设置置顶  也就是显示栏目  
					set.add(temp.partId);// 将此条partid 添加到set 以便后面判断
					classItem.add(temp);
				}
			}
			classListAdapter.removeAll();
			for(ClassItem item : classItem){
				classListAdapter.addItem(item);
			}
		}
	}

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stu
		/*4种方法获得被点击的条目
		 * 1.ClassItem item = classListAdapter.getItem(arg2);
		 * 2.ClassItem item = (ClassItem) classItemList.getItemAtPosition(arg2);
		 * 3.ClassItem item = data.get(arg2);
		 * 4.ClassListAdapter adapter = (ClassListAdapter)classItemList.getAdapter();
			 ClassItem item = adapter.getItem(arg2);
			 第4种方法实际上是1.2的合并。*/
		ClassItem item = classListAdapter.getItem(arg2);
		//ClassItem item = (ClassItem) classItemList.getItemAtPosition(arg2);
		//ClassListAdapter adapter = (ClassListAdapter)classItemList.getAdapter();
		//ClassItem item = adapter.getItem(arg2);
		//ClassItem item = data.get(arg2);
		String partName = item.className;
		if(partName.equals("人")){
			Toast.makeText(this, "测试啊", Toast.LENGTH_SHORT).show();
		}else if(partName.equals("@string/startAmend")){
			
		}else if(partName.equals( "@string/startTest")){
			
		}else if(partName.equals("@string/overTest")){
			
		}else if(partName.equals("@string/overTest")){
			
		}
	}
	
}

4.布局文件

Activity的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:background="#ffededed"
	android:orientation="vertical">
	<ListView 
		android:id="@+id/classItemListView"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:cacheColorHint="#00000000"
		android:divider="@drawable/divider_style"
		android:dividerHeight="1px"
		android:fastScrollEnabled="true">
	</ListView>
	<View
		android:layout_width="fill_parent"
		android:layout_height="1.0dip">
	</View>
</LinearLayout>

item的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:orientation="vertical">
	<LinearLayout
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:id="@+id/classGroupLayout">
		<!-- item01 -->
		<LinearLayout
			android:id="@+id/classPartNameLay"
			android:layout_width="fill_parent"
			android:layout_height="30.0dip"
			android:background="@drawable/group_bg"
			android:gravity="left">			
			<TextView           <!-- 空格 -->
				android:id="@+id/class_part_id"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:text=""></TextView>
			<TextView         <!-- 标题栏 -->
				android:id="@+id/class_part_name"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content"
				android:ellipsize="end"
				android:textColor="#253441"
				android:layout_centerVertical="true"
				android:singleLine="true"
				android:textSize="17sp"
				android:text="云学院"></TextView>
		</LinearLayout>
	</LinearLayout>
	<RelativeLayout
		android:id="@+id/relativeLayout1"
		android:layout_height="wrap_content"
		android:layout_width="match_parent"
		android:background="@drawable/item_bg_style">
		<LinearLayout             <!--以下组件为item条目的内容-->
			android:id="@+id/class_icon_layout"
			android:layout_alignParentLeft="true"
			android:layout_centerVertical="true"
			android:layout_height="64dp"
			android:layout_width="64dp"
			android:layout_marginTop="5px"
			android:layout_marginLeft="5px"
			android:layout_marginBottom="5px">
			<FrameLayout
					android:id="@+id/lyPortrait"
					android:layout_width="64dip"
					android:layout_height="64dip">
		  <!-- item的图片 --><ImageView android:id="@+id/class_item_img"
					android:scaleType="fitXY"
					android:layout_gravity="center"
					android:src="@drawable/default_class_icon"
					android:layout_height="60dip"
					android:layout_width="60dip"></ImageView>
			</FrameLayout>
		</LinearLayout>
		<LinearLayout
			android:layout_width="match_parent"
			android:orientation="vertical"
			android:id="@+id/linearLayout2"
			android:layout_height="wrap_content"
			android:layout_toRightOf="@id/class_icon_layout"
			android:layout_marginTop="5px">
			<RelativeLayout
				android:layout_width="match_parent"
				android:id="@+id/RelativeLayout01"
				android:layout_height="wrap_content">
				<TextView    <!-- item的名字 -->
					android:id="@+id/class_item_name"
					android:layout_width="wrap_content"
					android:layout_marginLeft="10px"
					android:layout_marginTop="35px"
					android:layout_height="wrap_content"
					android:layout_centerVertical="true"
					android:ellipsize="marquee"
					android:text="总裁研修班"
					android:textSize="16dp"
					android:textColor="#666666"
					android:textStyle="bold"></TextView>
			</RelativeLayout>
		</LinearLayout>
		<ImageView               <!-- 箭头 -->
			android:layout_width="wrap_content"
			android:id="@+id/class_arrow_right"
			android:layout_height="wrap_content"
			android:layout_marginRight="10.0dip"
			android:layout_alignParentRight="true"
			android:layout_centerVertical="true"
			android:src="@drawable/right_arrow"></ImageView>
	</RelativeLayout>
	<!--
		<View android:layout_below="@+id/relativeLayout1"
		android:layout_width="fill_parent" android:layout_height="1.0dip">
		</View>
	-->
</LinearLayout>


转载于:https://my.oschina.net/u/1014520/blog/186945

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值