android ExpandableListView实现


ExpandableListView 是android可实现的下拉list的控件,我们看下具体实现的方法:


1)xml布局:

布局里只要写一个ExpandableListView就可以。


<?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">

    <include layout="@layout/layout_head"/>

    <ExpandableListView
        android:id="@+id/assess_history_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:cacheColorHint="#00000000"
        android:listSelector="#00000000">
    </ExpandableListView>

</LinearLayout>


2)main activity

/**
 * Created by ting on 16-5-16.
 * 点击评估记录界面
 * */
public class AssessHistoryActivity extends JINABaseActivity {

    private ExpandableListView mAssessHisListview;
    private AssessExpandableListViewAdapter expandableListViewAdapter;

    //设置组视图的显示文字,此处可以写入实际使用的数据
    public String[] assessGroupText = new String[] { "语言", "模式" };
    
    //子视图显示文字,此处为了设计方便
    public String[] assessChildText = new String[]
            { "Java", "C", "C#", "C++"};

    @Override
    public void initWidget() {
        setContentView(R.layout.activity_assess_history);
        requestQueue = VolleyInstance.getInstance(this).getRequestQueue();
        initView();
    }

    /*
    * 初始化数据
    * */
    private void initView() {
        mAssessHisListview = (ExpandableListView) findViewById(R.id.assess_history_listview);
        expandableListViewAdapter = new AssessExpandableListViewAdapter(this,assessGroupText,assessChildText);
        mAssessHisListview.setAdapter(expandableListViewAdapter);
    }

    @Override
    public void widgetClick(View v) {

    }
}



3)定义适配器
/**
 * Created by ting on 16-5-16.
 * 点击评估记录界面适配器
 */
public class AssessExpandableListViewAdapter extends BaseExpandableListAdapter{

    private static final String TAG = "AssessListViewAdapter";
    private Context mContext;
    private String[] assessGroupText;
    private String[] assessChildText;

    public AssessExpandableListViewAdapter(Context context ,String[] groupText,String[] childText){
        mContext = context;
        assessGroupText = groupText;
        assessChildText = childText;
    }

    @Override
    public int getGroupCount() {
        return assessGroupText == null ? 0 : assessGroupText.length;
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return assessChildText.length;
    }

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

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return assessChildText[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) {
        Log.d(TAG,"GetGroupView :" + groupPosition + "assessGroupText: " + assessGroupText);
        LinearLayout layout = new LinearLayout(mContext);
        TextView textview = new TextView(mContext);
        textview.setPadding(36,10,0,0);
        textview.setTextSize(20);
        textview.setGravity(Gravity.CENTER_VERTICAL);
        textview.setText(getGroup(groupPosition).toString());
        layout.addView(textview);

        return layout;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        Log.d(TAG,"getChildView :" + childPosition + "assessChildText: " + assessChildText);
        LinearLayout layout = new LinearLayout(mContext);
        TextView textview = new TextView(mContext);
        textview.setPadding(36,10,0,0);
        textview.setTextSize(20);
        textview.setGravity(Gravity.CENTER_VERTICAL);
        textview.setText(getChild(groupPosition,childPosition).toString());
        layout.addView(textview);

        return layout;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }
}




总结:

重要方法:
expandGroup (int groupPos) ;//在分组列表视图中 展开一组,
setSelectedGroup (int groupPosition) ;//设置选择指定的组。
setSelectedChild (int groupPosition, int childPosition, boolean shouldExpandGroup);//设置选择指定的子项。
getPackedPositionGroup (long packedPosition);//返回所选择的组
getPackedPositionForChild (int groupPosition, int childPosition) ;//返回所选择的子项
getPackedPositionType (long packedPosition);//返回所选择项的类型(Child,Group)
isGroupExpanded (int groupPosition);//判断此组是否展开



之前查找的时候发现都是附着很多的条件,没有简洁一点介绍expandlistview的,所以想记录下,这里写的不够详细,还请见谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值