qq分组

效果



布局文件


//main
<?xml version="1.0" encoding="utf-8"?>
<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"
    >


    <ExpandableListView
        android:id="@+id/elv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:groupIndicator="@drawable/group"></ExpandableListView>
</RelativeLayout>



//child
<?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"
    >
    <ImageView
        android:id="@+id/child_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/child_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</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">
<TextView
    android:layout_marginLeft="40dp"
    android:id="@+id/tv_item"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>


</LinearLayout>

adapter

public class MyAdapter extends BaseExpandableListAdapter {
   private Context context;
    private String [] groupNames;
    private String[][] childNames;
    private int [][] childIcons;


    public MyAdapter(Context context, String[] groupNames, String[][] childNames, int[][] childIcons) {
        this.context = context;
        this.groupNames = groupNames;
        this.childNames = childNames;
        this.childIcons = childIcons;
    }
//获取组的个数


    @Override
    public int getGroupCount() {
        return groupNames.length;
    }
    //获取每个分组中自条目的个数
    @Override
    public int getChildrenCount(int i) {
        return childNames[i].length;
    }
    //获取组的数据内容
    @Override
    public Object getGroup(int i) {
        return groupNames[i];
    }
    //获取子条目内容
    @Override
    public Object getChild(int i, int i1) {
        return childNames[i][i1];
    }
//获取当前组的id
    @Override
    public long getGroupId(int i) {
        return i;
    }
    //获取当前条目的id
    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }
    //是否有固定的id
    @Override
    public boolean hasStableIds() {
        return true;
    }
    //获取组战士的效果
    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {


     View v=View.inflate(context, R.layout.item,null);
        TextView tv_group_name=(TextView)v.findViewById(R.id.tv_item);
        tv_group_name.setText(groupNames[i]);


     return v;


    }
    //获取子条目要展示的效果
    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
       //实例化子条目布局
        View v1=View.inflate(context,R.layout.child,null);
       //找控件
        TextView child_tv = (TextView) v1.findViewById(R.id.child_tv);
        ImageView child_img=(ImageView)v1.findViewById(R.id.child_img);
        //根据froupposition和childPosition获取当前要展示的内容
        child_tv.setText(childNames[i][i1]);
        child_img.setImageResource(childIcons[i][i1]);
        return v1;
    }
    //自条目是否可选
    @Override
    public boolean isChildSelectable(int i, int i1) {


        return true;
    }
}




mainactivity

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.widget.ExpandableListView;
import android.widget.Toast;


import adapter.MyAdapter;


public class MainActivity extends AppCompatActivity {


    String[] groupName = new String[]{"好友", "同学"};
    String[][] childName = new String[][]{{"张学友", "周润发", "成龙", "李连杰"}, {"马云", "刘强东", "李彦宏", "王健林"}};
    int[][] childIcons = new int[][]{{R.mipmap.f1, R.mipmap.f2, R.mipmap.f3, R.mipmap.f4}, {R.mipmap.f5, R.mipmap.l, R.mipmap.f7, R.mipmap.f8}};
    private ExpandableListView elv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        //初始化控件
        elv = (ExpandableListView) findViewById(R.id.elv);
        elv.setAdapter( new MyAdapter(this,groupName,childName,childIcons));
        //设置展开的监听事件
        elv.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
            public void onGroupExpand(int groupPosition) {
                //遍历所有的分组
                for(int i=0;i<groupName.length;i++){
                        //打开的不是i
                    if (i!=groupPosition){
                        elv.collapseGroup(i);
                    }
                }
            }
        });
        //设置点击条目的监听事件
        elv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
                Toast.makeText(MainActivity.this,"跟"+childName[i][i1]+"聊天",Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值