DoubleListView效果
来源:互联网 发布:袁隆平 诺贝尔奖 知乎 编辑:程序博客网 时间:2024/04/30 02:42
以上是效果图
------------------------------------代码开始-----------------------------------
先上布局
activity_category_list.xml
<LinearLayout 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" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ListView android: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" /> <ListView android: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="http://schemas.android.com/apk/res/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"> <ImageView android: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"/> <TextView android: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="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="0dp" android:paddingLeft="10dp" > <LinearLayout android:id="@+id/ll_item_category_secend" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:paddingBottom="0dp" > <TextView android: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.java
package 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()之后}}}
CategoryMainAdapter.java
package com.example.doublelistview;import java.util.List;import java.util.Map;import android.content.Context;import android.graphics.Color;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class CategoryMainAdapter extends BaseAdapter {private List<Map<String, Object>> data;private Context context;private int selectedPos = 0; // 选中的item的下标public CategoryMainAdapter(List<Map<String, Object>> data, Context context) {this.data = data;this.context = context;}public int getSelectedPos() {return selectedPos;}public void setSelectedPos(int selectedPos) {this.selectedPos = selectedPos;}@Overridepublic int getCount() {return data.size();}@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = View.inflate(context,R.layout.category_main_list_item, null);holder = new ViewHolder();holder.imageView = (ImageView) convertView.findViewById(R.id.iv_item_category_main);holder.textView = (TextView) convertView.findViewById(R.id.tv_item_category_main);holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.ll_item_category_main);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}Map<String, Object> map = data.get(position);holder.imageView.setImageResource((Integer) map.get("img"));holder.textView.setText(map.get("txt").toString());if(selectedPos==position) {//当前为选中的itemholder.linearLayout.setBackgroundColor(Color.WHITE);} else {holder.linearLayout.setBackgroundColor(Color.TRANSPARENT);}return convertView;}class ViewHolder {ImageView imageView;TextView textView;LinearLayout linearLayout;}}CategorySecendAdapter.java
package com.example.doublelistview;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class CategorySecendAdapter extends BaseAdapter {String[] data;Context context;public CategorySecendAdapter(String[] data, Context context) {this.data = data;this.context = context;}@Overridepublic int getCount() {return data.length;}@Overridepublic Object getItem(int position) {return data[position];}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = View.inflate(context,R.layout.category_secend_list_item, null);}TextView textView = (TextView) convertView.findViewById(R.id.tv_item_category_secend);textView.setText(data[position]);return convertView;}//设置新的数据public void setData(String[] data) {this.data = data;}}
0 0
- DoubleListView效果
- 商品分类列表DoubleListView
- 效果
- 效果
- 钟摆效果动画效果
- treeview 效果
- 效果收藏
- 效果:雨
- title效果
- ajax 效果
- 滤镜效果
- tableTAB效果
- flash效果
- 对联效果
- 半透明效果
- getContextPath效果
- 表格效果
- 合页效果
- 节后轻生折射老人“空巢”之痛
- error LNK2001: 无法解析的外部符号 __imp__RegEnumKeyExA@32
- Process分析
- R语言入门(一)
- eclipse+maven+ssh
- DoubleListView效果
- 女儿的幸福来自妈妈的教育
- vs2010 OpenGL 环境
- error LNK2019: 无法解析的外部符号 __imp__GetStockObject@4该符号在函数_WinMain@16 中被引用
- v7 actionbar 没有显示 overflow的问题
- 前端切图,把psd文件做成一个网页
- 【poj2942】圆桌骑士Knights of the Round Table【双连通分量】【二分图】【奇圈】
- error LNK2001: 无法解析的外部符号 __imp__MessageBoxA@16
- SQL之Locate