ListView--QQ联系人样式
2015-09-16 20:26
615 查看
可折叠展开的listView
逻辑代码
布局文件--main.xml
逻辑代码
package com.example.week2_day4_qq; import android.os.Bundle; import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.ExpandableListView.OnGroupClickListener; import android.widget.ExpandableListView.OnGroupCollapseListener; import android.widget.ExpandableListView.OnGroupExpandListener; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private ExpandableListView listView; // 声明数据源--组数据源 private String[] group = { "洗澡澡", "吹泡泡", "抱着枕头睡觉觉" }; private String[][] child = { { "小灰灰", "小香香", "喜洋洋" }, { "大熊", "蓝胖子" }, { "小叮当", "奥里亚", "女王" } }; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);// 加载布局文件 listView = (ExpandableListView) findViewById(R.id.ExpandableListView); adapter = new MyAdapter();// 实例化适配器 listView.setAdapter(adapter); // 注册监听器--组 // 返回值需要为false,否则不执行展开动作 // * return 代表的意思: // * true:代表事件自己处理 // * false: 代表这个事件 交给其他的监听处理 listView.setOnGroupClickListener(new OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView arg0, View arg1, int arg2, long arg3) { Toast.makeText(MainActivity.this, "点击了分组", Toast.LENGTH_SHORT) .show(); return false; } }); // 注册监听器---监听子元素,前提是子元素必须可以被选中,在adapter中设置 listView.setOnChildClickListener(new OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView arg0, View arg1, int arg2, int arg3, long arg4) { Toast.makeText(MainActivity.this, "点击了", Toast.LENGTH_SHORT) .show(); return true; } }); // 监听收缩分组 listView.setOnGroupCollapseListener(new OnGroupCollapseListener() { @Override public void onGroupCollapse(int arg0) { Toast.makeText(MainActivity.this, "收起了分组", Toast.LENGTH_SHORT) .show(); } }); // 展开了分组 listView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int arg0) { Toast.makeText(MainActivity.this, "展开了分组", Toast.LENGTH_SHORT) .show(); } }); } /* * 自定义一个适配器 */ public class MyAdapter extends BaseExpandableListAdapter { /* * 获取下标为arg0的分组里下标为arg1的数据 */ @Override public Object getChild(int arg0, int arg1) { // TODO Auto-generated method stub return child[arg0][arg1]; } @Override public long getChildId(int arg0, int arg1) { // TODO Auto-generated method stub return arg1; } /** * getChildView 子视图对象 int arg0:当前分组的下标 int arg1:子分组的下标 boolean * arg2:是否是最后一个视图view View arg3:复用的视图 ViewGroup * arg4:父控件ExpandableListView */ @Override public View getChildView(int arg0, int arg1, boolean arg2, View arg3, ViewGroup arg4) { LayoutInflater inflater = getLayoutInflater();// 获取布局加载器 View view = inflater.inflate(R.layout.activity_child, null);// 加载布局 TextView tv = (TextView) view.findViewById(R.id.child); tv.setText(child[arg0][arg1]); return view; } /* * 得到分组里面数据的个数 */ @Override public int getChildrenCount(int arg0) { // TODO Auto-generated method stub return child[arg0].length; } /* * 获取下标为argo的分组的对象 */ @Override public Object getGroup(int arg0) { // TODO Auto-generated method stub return null; } /* * 得到分组数量 */ @Override public int getGroupCount() { // TODO Auto-generated method stub return group.length; } /* * 获取下标为arg0的分组的item */ @Override public long getGroupId(int arg0) { return arg0; } @Override public View getGroupView(int arg0, boolean arg1, View arg2, ViewGroup arg3) { LayoutInflater inflater = getLayoutInflater();// 获取布局加载器 View view = inflater.inflate(R.layout.activity_group, null);// 加载布局 TextView tv = (TextView) view.findViewById(R.id.group); tv.setText(group[arg0]); return view; } /* * 底层设计 */ @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } /* * 当前子元素是否被选中 */ @Override public boolean isChildSelectable(int arg0, int arg1) { // TODO Auto-generated method stub return true; } } }
布局文件--main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 可折叠的listView --> <ExpandableListView android:id="@+id/ExpandableListView" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>布局文件--group
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/group" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:textColor="#00ff00" android:layout_marginLeft="30dp"/> </LinearLayout>布局文件--child
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/child" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="40dp" /> </LinearLayout>
相关文章推荐
- 泡泡同学带你玩转css
- css取消div蹭上的鼠标点击事件
- 去除img图片之间的空隙css样式
- CSS
- HTML&CSS Learning Notes 4
- 13年总结js,css,java xml
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
- css3阴影设置发光边框效果
- css3--background属性
- css通配符
- CSS选择器的优先级
- 不错的VS2010扩展——JSEnhancements,让js和css也折叠(转)
- CSS3Ps -Photoshop图层特效转CSS3代码
- vagrant中css,img不生效的问题
- css+html菜单适应性学习的宽度
- css3--border属性
- css解决文字垂直居中
- CSS display:table属性用法解析
- CSS selector选择符 进行CSS网页布局的基础
- My97DatePicker 与 某个CSS冲突 ,导致无法显示