安卓学习--二级列表BaseExpandableListAdapter

来源:互联网 发布:大数据必须掌握的技术 编辑:程序博客网 时间:2024/06/14 13:08

博客:http://blog.csdn.net/muyang_ren

一、资源文件

array.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <!-- group-->    <string-array name="group_values">        <item>hello1</item>        <item>hello2</item>        <item>hello3</item>        <item>hello4</item>    </string-array>    <!-- childs-->    <string-array name="child_values1">        <item>aaaaaaa</item>    </string-array>    <string-array name="child_values2">        <item>bbbbbbb</item>    </string-array>    <string-array name="child_values3">        <item>ccccccc</item>    </string-array>    <string-array name="child_values4">        <item>ddddddd</item>    </string-array></resources>

color.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <color name="colorPrimary">#3F51B5</color>    <color name="colorPrimaryDark">#303F9F</color>    <color name="colorAccent">#FF4081</color>    <color name="black">#000000</color>    <color name="white">#ffffff</color>    <color name="transparent">#00000000</color>    <!--header-->    <color name="MyAPP_header_color">#7A9DEB</color>    <color name="back_white_color">#FDFCFD</color>    <!--listview 分隔条颜色-->    <color name="childdivider_color">#D3DEEB</color>    <!--待选择的-->    <color name="line_color">#6bc78b</color>    <color name="title_bg">#008B45</color>    <color name="setting_item_bg">#dedfe0</color>    <color name="back">#efeff4</color>    <color name="head_text_color">#008B45</color>    <color name="header_color">#ffffff</color>    <color name="btn_pressed_color">#008B00</color>    <color name="item_text_color">#2b2b2b</color>    <color name="item_line_color">#c8c7cc</color></resources>
dimens.xml

<resources>    <!-- Default screen margins, per the Android Design guidelines. -->    <dimen name="activity_horizontal_margin">16dp</dimen>    <dimen name="activity_vertical_margin">16dp</dimen>    <!--header-->    <dimen name="header_height">50dp </dimen>    <dimen name="header_imagebutton_height"> 50dp </dimen>    <dimen name="header_imagebutton_width">  50dp </dimen>    <dimen name="title_button_width">   50dp </dimen>    <dimen name="title_textview_width"> 100dp</dimen>    <!-- list view-->    <dimen name="parent_list_height"> 30dp </dimen>    <dimen name="group_list_left">10dp</dimen>    <dimen name="children_list_height"> 30dp </dimen>    <dimen name="children_list_left">15dp</dimen></resources>

二、xml布局

activity_main.xml
<?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"    tools:context="com.example.lianghuiyong.myapplication.MainActivity">    <RelativeLayout        android:id="@+id/header_layout"        android:layout_width="fill_parent"        android:layout_height="@dimen/header_height"        android:background="@color/MyAPP_header_color">        <ImageButton            android:id="@+id/header_setting"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="@drawable/header_setting"            android:layout_marginLeft="18dp"            android:layout_centerVertical="true"            android:contentDescription="imagebutton" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="20sp"            android:text="@string/header_title"            android:layout_centerHorizontal="true"            android:layout_centerInParent="true"/>        <TextView            android:id="@+id/header_exit"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="20sp"            android:text="@string/header_out"            android:clickable="true"            android:layout_alignParentRight="true"            android:layout_centerInParent="true"            android:layout_marginRight="10dp" />    </RelativeLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="horizontal"        android:layout_below="@+id/header_layout">        <ExpandableListView            android:id="@+id/list_main"            android:layout_width="fill_parent"            android:layout_height="match_parent"            />    </LinearLayout></RelativeLayout>

三、Activity

MainActivity.java
package com.example.lianghuiyong.myapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.ExpandableListView;import com.example.lianghuiyong.myapplication.myappadpter.doubleListAdapter;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class MainActivity extends AppCompatActivity {    private ExpandableListView main_list = null;    private List group = new ArrayList();    private List<List<String>> child = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        main_list =(ExpandableListView)findViewById(R.id.list_main);        //获取xml的array-string数组,然后转换成List        group = Arrays.asList(getResources().getStringArray(R.array.group_values));        child.add(Arrays.asList(getResources().getStringArray(R.array.child_values1)));        child.add(Arrays.asList(getResources().getStringArray(R.array.child_values2)));        child.add(Arrays.asList(getResources().getStringArray(R.array.child_values3)));        child.add(Arrays.asList(getResources().getStringArray(R.array.child_values4)));        Log.d("lhy", "group = " + group);        Log.d("lhy", "child = " + child);        main_list.setAdapter(new doubleListAdapter(group, child));    }}

四、适配器

package com.example.lianghuiyong.myapplication.myappadpter;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseExpandableListAdapter;import android.widget.LinearLayout;import android.widget.TextView;import com.example.lianghuiyong.myapplication.R;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2015/11/26. */public class doubleListAdapter extends BaseExpandableListAdapter {    private List group = new ArrayList();    private List<List<String>> child = new ArrayList<>();    public doubleListAdapter(List group, List<List<String>> child) {            this.group = group;            this.child = child;            Log.d("lhy","group = " + this.group);            Log.d("lhy","child = " + this.child);            Log.d("lhy","group.size() = " + group.size());    }    @Override    public int getGroupCount() {        return group.size();    }    @Override    public int getChildrenCount(int groupPosition) {        return child.get(groupPosition).size();    }    @Override    public Object getGroup(int groupPosition) {        return group.get(groupPosition);    }    @Override    public Object getChild(int groupPosition, int childPosition) {        return (child.get(groupPosition).get(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 b, View view, ViewGroup viewGroup) {        //实例化 groupText 并设置属性        TextView groupText = new TextView(viewGroup.getContext());        groupText.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));        groupText.setPadding(70, 0, 0, 0);        groupText.setTextSize(20);        groupText.setText(getGroup(groupPosition).toString());//添加数据        return groupText;    }    @Override    public View getChildView(int groupPosition, int childPosition, boolean b, View view, ViewGroup viewGroup) {        //child LinearLayoutshilihua 属性设置        LinearLayout linearLayout = new LinearLayout(viewGroup.getContext());        //child childText实例化并设置属性        TextView childText = new TextView(viewGroup.getContext());        childText.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));        childText.setPadding(70, 0, 0, 0);        childText.setTextSize(20);        childText.setText(getChild(groupPosition,childPosition).toString());        //返回linearLayout实例        linearLayout.addView(childText);        return linearLayout;    }    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        return true;    }}






0 0
原创粉丝点击