QQ分组效果(ExpandableListView)的使用

来源:互联网 发布:出纳日记账软件 编辑:程序博客网 时间:2024/04/30 06:17

QQ分组效果图如下:
这里写图片描述
这里写图片描述
JAVA 代码

package com.example.days11expandablelistview0002;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Gravity;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView.LayoutParams;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity {    private List<String> grouplist;    private List<List<String>> childlist;    private ExpandableListView elv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        elv = (ExpandableListView) findViewById(R.id.elv);        setData();        MyAdapter adapter = new MyAdapter();        elv.setAdapter(adapter);    }    class MyAdapter extends BaseExpandableListAdapter {        @Override        public int getGroupCount() {            // TODO Auto-generated method stub            return grouplist.size();        }        @Override        public int getChildrenCount(int groupPosition) {            // TODO Auto-generated method stub            return childlist.get(groupPosition).size();        }        @Override        public Object getGroup(int groupPosition) {            // TODO Auto-generated method stub            return grouplist.get(groupPosition);        }        @Override        public Object getChild(int groupPosition, int childPosition) {            // TODO Auto-generated method stub            return childlist.get(groupPosition).get(childPosition);        }        @Override        public long getGroupId(int groupPosition) {            // TODO Auto-generated method stub            return groupPosition;        }        @Override        public long getChildId(int groupPosition, int childPosition) {            // TODO Auto-generated method stub            return childPosition;        }        @Override        public boolean hasStableIds() {            // TODO Auto-generated method stub            return false;        }        @Override        public View getGroupView(int groupPosition, boolean isExpanded,                View convertView, ViewGroup parent) {            String str = grouplist.get(groupPosition);            return setView(str);        }        private View setView(String str) {            TextView tv = new TextView(MainActivity.this);            LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,                    LayoutParams.WRAP_CONTENT);            tv.setLayoutParams(params);            tv.setPadding(36, 0, 0, 0);            tv.setGravity(Gravity.CENTER | Gravity.LEFT);            tv.setText(str);            return tv;        }        @Override        public View getChildView(int groupPosition, int childPosition,                boolean isLastChild, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            LinearLayout layout = new LinearLayout(MainActivity.this);            layout.setOrientation(0);            ImageView img = new ImageView(MainActivity.this);            int[][] res = new int[][] {                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 },                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 },                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 },                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 },                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 },                    { R.drawable.pic10, R.drawable.pic12, R.drawable.pic13,                            R.drawable.pic14 } };            img.setImageResource(res[groupPosition][childPosition]);            img.setPadding(10, 0, 0, 0);            TextView tv = new TextView(MainActivity.this);            tv.setPadding(36, 20, 0, 0);            tv.setGravity(Gravity.CENTER | Gravity.LEFT);            tv.setText(childlist.get(groupPosition).get(childPosition)                    .toString());            layout.addView(img);            layout.addView(tv);            return layout;        }        @Override        public boolean isChildSelectable(int groupPosition, int childPosition) {            // TODO Auto-generated method stub            return false;        }    }    class ViewHodler {        ImageView img;        TextView tv;    }    private void setData() {        grouplist = new ArrayList<String>();        childlist = new ArrayList<List<String>>();        addInfo(" ╭⌒⌒╮", new String[] { "张三", "李四", "王五", "赵六" });        addInfo("  ︶ ︶╭⌒⌒╮", new String[] { "张三", "李四", "王五", "赵六" });        addInfo("      ︶ ︶", new String[] { "张三", "李四", "王五", "赵六" });        addInfo("陌上花开", new String[] { "张三", "李四", "王五", "赵六" });        addInfo("  风景如画", new String[] { "张三", "李四", "王五", "赵六" });        addInfo("一人行走又何妨", new String[] { "张三", "李四", "王五", "赵六" });    }    private void addInfo(String string, String[] strings) {        grouplist.add(string);        List<String> list = new ArrayList<String>();        for (int i = 0; i < strings.length; i++) {            list.add(strings[i]);        }        childlist.add(list);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

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"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ExpandableListView        android:id="@+id/elv"        android:layout_width="match_parent"        android:layout_height="match_parent"/></RelativeLayout>
0 0
原创粉丝点击