安卓最简单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); }
阅读全文
0 0
- 安卓最简单2级列表-(2)
- 算法简单笔记(2):散列表
- 简单定制Android控件(2) - 点赞列表控件
- 2级列表
- 下拉列表(2)
- (2)列表
- 列表(2)
- 哈希表(散列表)简单实现
- 简单列表的实现(基于数组)
- 2级列表shopDemo布局
- sharepoint 2010 使用自定义列表模版创建列表(2)
- 集合与列表(2)
- 竞价列表问题(2)
- python 列表 字典(2)
- 可变参数列表(2)
- Html(2)- 列表标签
- Android_QQ列表实现(2)
- python基础 列表(2)
- 菜鸟理解关于数据驱动和关键字驱动区别
- 【PAT】【Advanced Level】1016. Phone Bills (25)
- 【Redis笔记】2.Redis命令
- 欢迎使用CSDN-markdown编辑器
- 陀螺仪mpu6050的调试与dmp库的移植经历
- 安卓最简单2级列表-(2)
- php配置
- [leetcode]506. Relative Ranks
- MediaPlayer
- 1.ARKit介绍
- 3.漏洞扫描
- uva3983(dp+单调队列)捡垃圾的机器人
- UVA-1589-象棋
- hdu 1028 Ignatius and the Princess III