DoubleListView效果

以上是效果图

————————————代码开始———————————–

先上布局

activity_category_list.xml

<LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><ListViewandroid:id="@+id/lv_category_list_main"android:layout_height="match_parent"android:layout_width="0dp"android:layout_weight="1"android:background="#FF4040"android:divider="@null"android:scrollbars="none" /><ListViewandroid:id="@+id/lv_category_list_secend"android:layout_height="match_parent"android:layout_width="0dp"android:layout_weight="2"android:background="#FFFFFF"android:divider="@null"/></LinearLayout></LinearLayout>category_main_list_item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:id="@+id/ll_item_category_main"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:orientation="horizontal"><ImageViewandroid:id="@+id/iv_item_category_main"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="21dp"android:paddingLeft="10dp"android:paddingTop="21dp"android:src="@drawable/logo"/><TextViewandroid:id="@+id/tv_item_category_main"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingBottom="19dp"android:paddingLeft="10dp"android:paddingTop="19dp"android:text="热门分类"android:textColor="#000000"android:textSize="18sp" /></LinearLayout>category_secend_list_item.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="0dp"android:paddingLeft="10dp" ><LinearLayoutandroid:id="@+id/ll_item_category_secend"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:paddingBottom="0dp" ><TextViewandroid:id="@+id/tv_item_category_secend"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:paddingBottom="18.5dp"android:paddingTop="18dp"android:text="全部分类"android:textColor="#666666"android:textSize="17sp" /></LinearLayout></LinearLayout>准备工具类

Constant.java

package com.example.doublelistview;public class Constant {// 第一个listview的图片数据数组public static int[] LISTVIEWIMG = new int[] {R.drawable.ic_category_2147483648, R.drawable.ic_category_10,R.drawable.ic_category_20, R.drawable.ic_category_30,R.drawable.ic_category_45, R.drawable.ic_category_50,R.drawable.ic_category_55, R.drawable.ic_category_60,R.drawable.ic_category_65, R.drawable.ic_category_70,R.drawable.ic_category_80, R.drawable.ic_category_none };// 第一个listview的文本数据数组public static String[] LISTVIEWTXT = new String[] { "热门分类", "美食", "购物","休闲娱乐", "运动健身", "丽人", "结婚", "酒店", "爱车", "亲子", "生活服务", "家装" };// 第二个listview的文本数据public static String[][] MORELISTTXT = {{ "全部分类", "小吃快餐", "咖啡厅", "电影院", "KTV", "茶馆", "足疗按摩", "超市/便利店","银行", "经济型酒店", "景点/郊游", "公园", "美发" },{ "全部美食", "小吃快餐", "西餐", "火锅", "北京菜", "川菜", "日本", "面包甜点", "粤菜","韩国料理", "自助餐", "浙江菜", "云南菜", "湘菜", "东南亚菜", "西北菜", "鲁菜","东北菜", "素菜", "新疆菜", "海鲜", "清真菜", "贵州菜", "湖北菜", "其他" },{ "全部购物", "综合商场", "服饰鞋包", "超市/便利店", "特色集市", "品牌折扣店", "眼镜店", "珠宝饰品","化妆品", "运动户外", "食品茶酒", "书店", "数码产品", "药店", "京味儿购物", "亲子购物","花店", "家具建材", "更多购物场所" },{ "全部休闲娱乐", "咖啡厅", "KTV", "景点/郊游", "电影院", "酒吧", "公园", "温泉", "文化艺术","足疗按摩", "洗浴", "茶馆", "游乐游艺", "密室", "采摘/农家乐", "桌面游戏", "台球馆","DIY手工坊", "休闲网吧", "真人CS", "棋牌室", "轰趴馆", "私人影院", "更多休闲娱乐" },{ "全部运动健身", "健身中心", "游泳馆", "瑜伽", "羽毛球馆", "台球馆", "舞蹈", "体育场馆","高尔夫场", "网球场", "武术场馆", "篮球场", "保龄球馆", "足球场", "乒乓球馆","更多体育运动" },{ "全部丽人", "美发", "美容/SPA", "齿科", "美甲", "化妆品", "瑜伽", "瘦身纤体", "舞蹈","个性写真", "整形" },{ "全部结婚", "婚纱摄影", "婚宴酒店", "婚纱礼服", "婚庆公司", "婚戒首饰", "个性写真", "彩妆造型","婚礼小礼品", "婚礼跟拍", "婚车租赁", "司仪主持", "婚房装修", "更多婚礼服务" },{ "全部酒店", "经济型酒店", "五星级酒店", "度假村", "四星级酒店", "三星级酒店", "农家院","公寓式酒店", "青年旅社", "精品酒店", "更多酒店住宿" },{ "全部爱车", "维修保养", "驾校", "停车场", "4S店/汽车销售", "加油站", "配件/车饰", "汽车租赁","汽车保险" },{ "全部亲子", "亲子摄影", "幼儿教育", "亲子游乐", "孕产护理", "亲子购物", "更多亲子服务" },{ "全部生活服务", "医院", "银行", "齿科", "宠物", "培训", "快照/冲印", "学校", "旅行社","购物网站", "干洗店", "家政", "奢侈品护理", "商务楼", "小区", "更多生活服务" },{ "全部家装", "家具家装", "家用电器", "建材", "家装卖场", "装修设计" } };}CategoryListActivity.javapackage com.example.doublelistview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.androidannotations.annotations.AfterViews;import org.androidannotations.annotations.Click;import org.androidannotations.annotations.EActivity;import org.androidannotations.annotations.ItemClick;import org.androidannotations.annotations.ViewById;import android.app.Activity;import android.view.View;import android.widget.ListView;@EActivity(R.layout.activity_category_list)public class CategoryListActivity extends Activity {// 左边的listview@ViewByIdListView lv_category_list_main;// 右边的listview(或者叫二级列表的listview)@ViewByIdListView lv_category_list_secend;// 左边的适配器CategoryMainAdapter mainAdapter;// 右边的适配器CategorySecendAdapter secendAdapter;// 准备存放数据的list集合—每个item元素是一个map集合List<Map<String, Object>> mainData = new ArrayList<Map<String, Object>>();@AfterViewsvoid init() {// 初始化主列表的数据initMainData();// 初始主adapter(参数有数据、环境)mainAdapter = new CategoryMainAdapter(mainData, this);lv_category_list_main.setAdapter(mainAdapter);// 显示二级分类(初始化先显示二维数据(MORELISTTXT)的第一个元素)String[] data = Constant.MORELISTTXT[0];secendAdapter = new CategorySecendAdapter(data, this);lv_category_list_secend.setAdapter(secendAdapter);}/** * 初始化左边listview的数据(每一行或者每个item就是一个map键值对) */private void initMainData() {for (int i = 0; i < Constant.LISTVIEWIMG.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("img", Constant.LISTVIEWIMG[i]);map.put("txt", Constant.LISTVIEWTXT[i]);mainData.add(map);}}/** * 在一级列表中添加点击每个条目的dian事件 */@ItemClickvoid lv_category_list_main(int position) {int selectedPos = mainAdapter.getSelectedPos();if (position != selectedPos) {// 更新主列表mainAdapter.setSelectedPos(position);mainAdapter.notifyDataSetChanged();// 通知Main ListView更新// 更新二级列表String[] data = Constant.MORELISTTXT[position];secendAdapter.setData(data);secendAdapter.notifyDataSetChanged();// 通知Secend ListView更新lv_category_list_secend.setSelection(0);// 滑动到顶部,// 必须在notifyDataSetChanged()之后}}}梦想,并不奢侈,只要勇敢地迈出第一步。

DoubleListView效果

相关文章:

你感兴趣的文章:

标签云: