安卓最简单2级列表-(2)

来源:互联网 发布:带网络电视 编辑:程序博客网 时间:2024/06/05 04:33

Step1:效果图

这里写图片描述

这里写图片描述

Step2:数据结构

{    "success": true,    "msg": "",    "data": [        {            "name": "通用模板",            "pid": 0,            "lev": 1,            "createTime": "2017-07-14",            "updateTime": null,            "typeList": [                {                    "id": 49,                    "createTime": 1500033726000,                    "updateTime": null,                    "dataStatus": 1001,                    "name": "单位",                    "pid": 44,                    "lev": 2,                    "realOrNick": 1102,                    "acronym": "DW"                }               ],            "acronym": "TY",            "objId": 44        },        {            "name": "定制模板",            "pid": 0,            "lev": 1,            "createTime": "2017-07-14",            "updateTime": null,            "typeList": [                {                    "id": 51,                    "createTime": 1500033763000,                    "updateTime": null,                    "dataStatus": 1001,                    "name": "个人",                    "pid": 45,                    "lev": 2,                    "realOrNick": 1102,                    "acronym": "GR"                },                {                    "id": 52,                    "createTime": 1500033782000,                    "updateTime": null,                    "dataStatus": 1001,                    "name": "企业",                    "pid": 45,                    "lev": 2,                    "realOrNick": 1102,                    "acronym": "QY"                },               ],            "acronym": "DZ",            "objId": 45        },

Step3:布局文件 activity.xml

 <?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/gray_backage"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="horizontal">        <ListView            android:id="@+id/listview_rel"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="4"            android:divider="@color/white"            android:dividerHeight="@dimen/px6dp"            android:scrollbars="none"/>        <View            android:layout_width="@dimen/px52dp"            android:layout_height="match_parent"            android:background="@color/white"/>        <ListView            android:id="@+id/listview_nick"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="6"            android:background="@color/white"            android:divider="@color/gray_backage"            android:dividerHeight="@dimen/px6dp"            android:scrollbars="none"/>    </LinearLayout></LinearLayout>

Step 4: list_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="wrap_content"    android:background="@color/bg_color"    android:gravity="center_horizontal">    <TextView        android:id="@+id/ming_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:padding="@dimen/dip_20"        android:textColor="@color/minute_black"        android:textSize="@dimen/sp_15"/></LinearLayout>

Step 5:MingAdapter和MingSecondAdapter一样的
这种CommonAdapter百度很多,自己也可以继承BaseAdapter

import android.content.Context;import android.graphics.Color;import android.widget.TextView;import com.lxkj.mchat.R;import com.lxkj.mchat.adapter.commonlist.CommonAdapter;import com.lxkj.mchat.adapter.commonlist.ViewHolder;import com.lxkj.mchat.bean.httpbean.MingBean;import com.lxkj.mchat.util.Tools;import java.util.List;public class MingAdapter extends CommonAdapter<MingBean> {    private Context context;    private int selectedPosition = -1;    //供外部调用    public void setSelectedPosition(int position) {        selectedPosition = position;    }    public MingAdapter(Context context, int layoutId, List<MingBean> datas) {        super(context, layoutId, datas);        this.context = context;    }    @Override    protected void convert(ViewHolder holder, MingBean item, int position) {        TextView name = holder.getView(R.id.ming_name);        if (Tools.isEmpty(item.getName())) {            name.setText(context.getString(R.string.text_null));        } else {            name.setText(item.getName());        }       /**         * 点击后背景与字体的变换         */        if (selectedPosition == position) {            name.setTextColor(Color.parseColor("#F39800"));            name.setBackgroundColor(Color.WHITE);        } else {            name.setTextColor(Color.parseColor("#333333"));            name.setBackgroundColor(Color.TRANSPARENT);        }    }}

Step 6: MingBean.class类

public class MingBean {    /**     * 名称     */    private String name;    /**     * pid     */    private int pid;    /**     * lev     */    private int lev;    /**     * objId     */    private int objId;    /**     * 创建的时间     */    private String createTime;    /**     * 更新的时间     */    private String updateTime;    /**     * 集合     *     * @return     */    private List<TypeList> typeList;    public List<TypeList> getTypeList() {        return typeList;    }    public void setTypeList(List<TypeList> typeList) {        this.typeList = typeList;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getPid() {        return pid;    }    public void setPid(int pid) {        this.pid = pid;    }    public int getLev() {        return lev;    }    public void setLev(int lev) {        this.lev = lev;    }    public int getObjId() {        return objId;    }    public void setObjId(int objId) {        this.objId = objId;    }    public String getCreateTime() {        return createTime;    }    public void setCreateTime(String createTime) {        this.createTime = createTime;    }    public String getUpdateTime() {        return updateTime;    }    public void setUpdateTime(String updateTime) {        this.updateTime = updateTime;    }    public class TypeList {        /**         * 名称         */        private String name;        /**         * pid         */        private int pid;        /**         * lev         */        private int lev;        /**         * id         */        private int id;        /**         * realOrNick         */        private int realOrNick;        /**         * 创建的时间         */        private String createTime;        /**         * 更新的时间         */        private String updateTime;        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public int getPid() {            return pid;        }        public void setPid(int pid) {            this.pid = pid;        }        public int getLev() {            return lev;        }        public void setLev(int lev) {            this.lev = lev;        }        public int getId() {            return id;        }        public void setId(int id) {            this.id = id;        }        public int getRealOrNick() {            return realOrNick;        }        public void setRealOrNick(int realOrNick) {            this.realOrNick = realOrNick;        }        public String getCreateTime() {            return createTime;        }        public void setCreateTime(String createTime) {            this.createTime = createTime;        }        public String getUpdateTime() {            return updateTime;        }        public void setUpdateTime(String updateTime) {            this.updateTime = updateTime;        }    }}

Step 7: MainActivity.class类 贴出关键代码,关联的较多,后续会贴出整个请求过程

    //初始化    private ListView listview_rel, listview_nick;    private MingAdapter mingAdapter;    private MingSecondAdapter mingSecondAdapter;    //找ID    listview_rel = (ListView) this.findViewById(R.id.listview_rel);    listview_nick = (ListView) this.findViewById(R.id.listview_nick);    /**     * 这是请求成功的回调,主要解决拿到数据的问题,然后其他复制就行OK了     */  @Override    public void onGetFirstModleListSuccess(final List<MingBean> firstlist) {        //左边一级菜单        mingAdapter = new MingAdapter(this, R.layout.list_ming_item, firstlist);        listview_rel.setAdapter(mingAdapter);        //左边一级点击事件和显示2级菜单        listview_rel.setOnItemClickListener(new AdapterView.OnItemClickListener() {            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {        //将选中的postion变色与背景           mingAdapter.setSelectedPosition(position);        //刷新数据          mingAdapter.notifyDataSetInvalidated();        //根据点击的postion加载下级 type不用管,只是区分的                mingSecondAdapter  = new MingSecondAdapter(MingRelNickTemplateActivity.this,                        R.layout.list_ming_second_item, firstlist.get(position).getTypeList(), type);        //设置2级数据                        listview_nick.setAdapter(mingSecondAdapter);            }        });    }    //请求失败的回调    @Override    public void onGetFirstModleListFailed(String msg) {        showToast(msg);    }
原创粉丝点击