ExpandableListView 实现QQ的下拉列表

10 篇文章 0 订阅

首先新建一个adapter类继承BaseExpandableListAdapter

import android.content.Context;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

public class ExpandalerAdapter extends BaseExpandableListAdapter{
	
	private String group[] = new String[]{
			"我的好友","college",
			"senior","classes",
			"folks","primary",
			"friends","College","teacher"};
	private String child[][] = new String[][]{
			{"陈君蕾","崔雅洁","风情","简简单单","李艳茹"},
			{"稍远","王刚","杨芬","王洋","陈慧","付芳芳"},
			{"猴子","王忍","蔡瑞雪","陈璇","丁作声","耗子"},
			{"李超","于洋","永杰","王雪茹","曲梅梅","李若男"},
			{"大哥","二哥","姐","表姐","岩岩","灿灿","想想"},
			{"胡梅","慧慧","陈继秋","高攀","龙强","陆梅"},
			{"成为","青梅","葛新伟","亚洲"},
			{"王威","王立波","李志仁","张杰","万京","张开成"},
			{"陈全","赵峰","周传华","潘教授"}
			};
	
	private Context context = null;
	
	public ExpandalerAdapter(Context context) {
		this.context = context;
	}
	@Override
	public int getGroupCount() {
		return group.length;
	}

	@Override
	public int getChildrenCount(int groupPosition) {
		return child[groupPosition].length;
	}

	@Override
	public Object getGroup(int groupPosition) {
		return group[groupPosition];
	}

	@Override
	public Object getChild(int groupPosition, int childPosition) {
		return child[groupPosition][childPosition];
	}

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

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

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

	@Override
	public View getGroupView(int groupPosition, boolean isExpanded,
			View convertView, ViewGroup parent) {
		TextView textView = buildTextView();
		textView.setText(this.getGroup(groupPosition).toString());
		return textView;
	}

	@Override
	public View getChildView(int groupPosition, int childPosition,
			boolean isLastChild, View convertView, ViewGroup parent) {
		TextView textView = buildTextView();
		textView.setText(this.getChild(groupPosition, childPosition).toString());
		return textView;
	}

	@Override
	public boolean isChildSelectable(int groupPosition, int childPosition) {
		return true;
	}
	
	
	private TextView buildTextView(){
		TextView textView = new TextView(context);
		AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 35);
		textView.setLayoutParams(layoutParams);
		textView.setTextSize(15.f);
		textView.setGravity(Gravity.CENTER);
		textView.setPadding(40, 8, 3, 3) ;
		return textView;
	}
}

在activity中实现展示


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.Toast;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;
import android.widget.ExpandableListView.OnGroupCollapseListener;
import android.widget.ExpandableListView.OnGroupExpandListener;

public class MainActivity extends Activity {
	
	private ExpandableListView listView = null;
	private ExpandalerAdapter adapter = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		listView = (ExpandableListView)this.findViewById(R.id.expandablelistview);
		adapter = new ExpandalerAdapter(this);
		
		listView.setAdapter(adapter);
		this.registerForContextMenu(listView);//可以去掉这个看下效果如何
		listView.setOnChildClickListener(new OnChildClickListenerImpl());
		listView.setOnGroupClickListener(new OnGroupClickListenerImpl());
		listView.setOnGroupCollapseListener(new OnGroupCollapseListenerImpl());
		listView.setOnGroupExpandListener(new OnGroupExpandListenerImpl());
	}
	
	private class OnChildClickListenerImpl implements OnChildClickListener{

		@Override
		public boolean onChildClick(ExpandableListView parent, View v,
				int groupPosition, int childPosition, long id) {
			Toast.makeText(MainActivity.this, "子项被选中:所在组"+groupPosition+"所在child"+childPosition, Toast.LENGTH_SHORT).show();
			return false;
		}
		
	}
	
	private class OnGroupClickListenerImpl implements OnGroupClickListener{

		@Override
		public boolean onGroupClick(ExpandableListView parent, View v,
				int groupPosition, long id) {
			Toast.makeText(MainActivity.this, "组被选中:所在组"+groupPosition, Toast.LENGTH_SHORT).show();
			return false;
		}
		
	}
	
	private class OnGroupCollapseListenerImpl implements OnGroupCollapseListener{

		@Override
		public void onGroupCollapse(int groupPosition) {
			Toast.makeText(MainActivity.this, "组被选中:所在组"+groupPosition+"组关闭", Toast.LENGTH_SHORT).show();
		}
		
	}
	
	private class OnGroupExpandListenerImpl implements OnGroupExpandListener{

		@Override
		public void onGroupExpand(int groupPosition) {
			Toast.makeText(MainActivity.this, "组项被选中:所在组"+groupPosition+"被展开", Toast.LENGTH_SHORT).show();
		}
		
	}
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值