您的位置:首页 > 移动开发 > Android开发

Android_ExpandableListView_一个ListView实现二级列表

2016-10-09 15:24 786 查看
主要注意使用 ExpandableListView 和  ExpandableListAdapter 

Android给我们提供了ExpandableListView类,极大的方便了我们开发二级分类。顾名思义,ExpandableListView是ListView的子类。它在普通的ListView的基础上进行了拓展,它把应用中的列表分为几组,每组又包含多个列表项。

ExpandableListView的用法和ListView非常像,只是其所显示的列表项应该由ExpandableListAdapter提供,下面是它的xml属性及说明:



<span style="white-space:pre"> </span>elv_demo = (ExpandableListView) findViewById(R.id.elv_demo);

MyExpandableListAdapter myExpandableListAdapter = new MyExpandableListAdapter(this);
elv_demo.setAdapter(myExpandableListAdapter);

3、MyExpandableListAdapter代码如下:

package imcs.cb.com.groupitemdemo.adapter;

import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ExpandableListAdapter;
import android.widget.TextView;

import java.util.zip.Inflater;

import imcs.cb.com.groupitemdemo.R;

/**
* Created by Ricky on 2016/10/8.
*/
public class MyExpandableListAdapter implements ExpandableListAdapter {
private Context context;
private LayoutInflater inflater;

public MyExpandableListAdapter(Context context){
this.context = context;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public void registerDataSetObserver(DataSetObserver dataSetObserver) {

}

@Override
public void unregisterDataSetObserver(DataSetObserver dataSetObserver) {

}

/**
* 组的数量
* @return
*/
@Override
public int getGroupCount() {
return 5;
}

/**
* 第 i 组 的子条目数量
* @param i
* @return
*/
@Override
public int getChildrenCount(int i) {
if (i == 0) {
return 4;
} else if (i == 1) {
return 2;
} else if (i == 2) {
return 5;
}else if (i == 3){
return 3;
}else if (i == 4){
return 2;
}else {
return 0;
}
}

@Override
public Object getGroup(int i) {
return i;
}

@Override
public Object getChild(int i, int i1) {
return null;
}

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

@Override
public long getChildId(int i, int i1) {
return i*100 + i1;
}

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

/**
*
* @param i  第 i 个组群
* @param b
* @param view
* @param viewGroup
* @return
*/
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
View groupView = inflater.inflate(R.layout.item_group  ,null);
TextView tv_title = (TextView) groupView.findViewById(R.id.tv_title);
tv_title.setText("组群 " + i);
return groupView;

//        return null;
}

/**
*
* @param i  第 i 组
* @param i1  第 i 组 的 第 i1 行
* @param b
* @param view
* @param viewGroup
* @return
*/
@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
View childView = inflater.inflate(R.layout.item_child  ,null);
TextView tv_title_child = (TextView) childView.findViewById(R.id.tv_title_child);
tv_title_child.setText(i + "组  " + i1 + "子项");
return childView;
}

@Override
public boolean isChildSelectable(int i, int i1) {
return true;
}

@Override
public boolean areAllItemsEnabled() {
return false;
}

@Override
public boolean isEmpty() {
return false;
}

@Override
public void onGroupExpanded(int i) {

}

@Override
public void onGroupCollapsed(int i) {

}

@Override
public long getCombinedChildId(long l, long l1) {
return 0;
}

@Override
public long getCombinedGroupId(long l) {
return 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐