今天看啥
热点:

android listView二级目录选中效果


一.listView的二级目录且选中实现:

记录下来,以便以后可能会用到,直接上贴源码:

先上效果图:

\ \

主界面:

public class MainActivity extends Activity {

	// 树形Listview显示类别
	private ExpandableListView listview1;
	// 一级
	private List groups;
	// 二级
	private List> child;
	// 适配器
	private ListViewAdapter mAdapter;
	//记录点击的节点位置,初始为-1
	public static int children_item = -1;
	public static int parent_item = -1;
	//记录上一次点击的item
	private View view;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		listview1 = (ExpandableListView) findViewById(R.id.listview1);

		mAdapter = new ListViewAdapter(this, ListViewAdapter.PaddingLeft >> 1);

		groups = getListData();
	    //一级目录
		child = new ArrayList>();
		List  treeNode = mAdapter.GetTreeNode();
        //为每一个一级目录下添加内容
		for (int i = 0; i < groups.size(); i++) {
			ListViewAdapter.TreeNode node = new ListViewAdapter.TreeNode();
			node.parent = groups.get(i);
			child.add(i,getListData());
			for (int ii = 0; ii < child.get(i).size(); ii++) {
				node.childs.add(child.get(i).get(ii));
			}
			treeNode.add(node);
		}
		mAdapter.UpdateTreeNode(treeNode);
		listview1.setAdapter(mAdapter);
		listview1.setOnChildClickListener(new OnChildClickListener() {

			@Override
			public boolean onChildClick(ExpandableListView arg0,
					View arg1, int parent, int children, long arg4) {
                //当前item变色
				arg1.setBackgroundResource(R.color.color1);
				//上一个item还原
				if (parent_item != -1
						&& children_item != -1
						&& (children_item != children || parent_item != parent)) {
					view.setBackgroundResource(R.drawable.listview_item_bg);
				}
				view = arg1;
				children_item = children;
				parent_item = parent;
				return false;
			}
		});
	}
    
	public List getListData() {

		List list = new ArrayList();
		list.add("语文");
		list.add("数学");
		list.add("英语");
		list.add("历史");
		list.add("毛概");
		list.add("自然");

		return list;
	}

}
适配器:

 

 

public class ListViewAdapter extends BaseExpandableListAdapter {
	public static final int ItemHeight = 72;// 每项的高度
	public static final int PaddingLeft = 48;// 每项的高度
	private int myPaddingLeft = 0;
    
	static public class TreeNode {
		public String parent;
		public List childs = new ArrayList();
	}

	List treeNodes = new ArrayList();
	Context parentContext;

	public ListViewAdapter(Context view, int myPaddingLeft) {
		parentContext = view;
		this.myPaddingLeft = myPaddingLeft;
	}

	public List GetTreeNode() {
		return treeNodes;
	}

	public void UpdateTreeNode(List nodes) {
		treeNodes = nodes;
	}

	public void RemoveAll() {
		treeNodes.clear();
	}

	public Object getChild(int groupPosition, int childPosition) {
		return treeNodes.get(groupPosition).childs.get(childPosition)
				.toString();
	}

	public int getChildrenCount(int groupPosition) {
		return treeNodes.get(groupPosition).childs.size();
	}

	static public TextView getTextView(Context context) {
		AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
				ViewGroup.LayoutParams.FILL_PARENT, ItemHeight);
		TextView textView = new TextView(context);
		textView.setLayoutParams(lp);
		textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
		textView.setTextSize(15);
		return textView;
	}

	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		TextView textView = getTextView(this.parentContext);
		textView.setText(getChild(groupPosition, childPosition).toString());
		textView.setPadding(myPaddingLeft + PaddingLeft, 0, 0, 0);
		textView.setTextSize(15);
		return textView;
	}

	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		//不会选中丢失
		if (MainActivity.children_item != -1) {
			if (MainActivity.children_item == groupPosition) {
				convertView
						.setBackgroundResource(R.color.color1);
			} else {
				convertView
						.setBackgroundResource(R.drawable.listview_item_bg);
			}
		}
		TextView textView = getTextView(this.parentContext);
		textView.setText(getGroup(groupPosition).toString());
		textView.setPadding(myPaddingLeft + (PaddingLeft >> 1), 0, 0, 0);
		return textView;
	}

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

	public Object getGroup(int groupPosition) {
		return treeNodes.get(groupPosition).parent.toString();
	}

	public int getGroupCount() {
		return treeNodes.size();
	}

	public long getGroupId(int groupPosition) {
		return groupPosition;
	}

	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}

	public boolean hasStableIds() {
		return true;
	}

}

xml:

 

 


   

drawable/listview_item_bg.xml:

 

 



    
    
   	
    

color.xml:

 

 



    @android:color/background_dark


 

www.bkjia.comtruehttp://www.bkjia.com/Androidjc/1003399.htmlTechArticleandroid listView二级目录选中效果 一.listView的二级目录且选中实现: 记录下来,以便以后可能会用到,直接上贴源码: 先上效果图: 主界面...

相关文章

相关搜索: 效果 目录

帮客评论

视觉看点