Android二级分类列表ListView
2016-03-17 14:41
477 查看
1.aty
2.xml 4aty
3.简陋的item xml
4.main adpter MainListBaseAdapter
5。 more list adapter
结果
demo下载:http://download.csdn.net/detail/richiezhu/9464387
Android二级分类列表GirdView见:http://blog.csdn.net/richiezhu/article/details/50920384
package com.louis.classifymenuview; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { List<Map<String,Object>> mainMapList=new ArrayList<>(); List<List<Map<String,Object>>> moreMapList_List=new ArrayList<>(); ListView moreLv; MainListBaseAdapter myBaseAdapter; MoreListBaseAdpter moreListBaseAdpter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); ListView mainLv= (ListView) findViewById(R.id.classify_mainlist); moreLv= (ListView) findViewById(R.id.classify_morelist); myBaseAdapter=new MainListBaseAdapter(this,mainMapList); // mainLv.setAdapter(new SimpleAdapter(this, mainMapList, R.layout.list_items, new String[]{"mianName"}, new int[]{R.id.id_tv_list_item})); mainLv.setAdapter(myBaseAdapter); // mainLv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); initMoreBaseAdapter(0); mainLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { myBaseAdapter.setNowSelectedIndex(position); initMoreBaseAdapter(position); } }); } private void initMoreBaseAdapter(int position) { moreListBaseAdpter=new MoreListBaseAdpter(this,moreMapList_List.get(position)); // SimpleAdapter simpleAdapter= new SimpleAdapter(MainActivity.this, moreMapList_List.get(position), R.layout.list_items, new String[]{"moreName"}, new int[]{R.id.id_tv_list_item}); moreLv.setAdapter(moreListBaseAdpter); moreLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { moreListBaseAdpter.setNowSelectedIndex(position); } }); moreListBaseAdpter.notifyDataSetChanged(); } private void initMoreAdapter(int position) { SimpleAdapter simpleAdapter= new SimpleAdapter(MainActivity.this, moreMapList_List.get(position), R.layout.list_items, new String[]{"moreName"}, new int[]{R.id.id_tv_list_item}); moreLv.setAdapter(simpleAdapter); simpleAdapter.notifyDataSetChanged(); } private void initData() { for (int i=0;i<15;i++){ Map<String,Object> mianMap=new HashMap<>(); mianMap.put("mainName","mainName"+i); mainMapList.add(mianMap); List<Map<String,Object>> moreMapList=new ArrayList<>(); for (int j=0;j<10;j++){ Map<String,Object> moreMap=new HashMap<>(); moreMap.put("moreName","mainName"+i+"下moreName"+j); moreMapList.add(moreMap); } moreMapList_List.add(moreMapList); } } }
2.xml 4aty
<?xml version="1.0" encoding="utf-8"?> <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" tools:context="com.louis.classifymenuview.MainActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ListView android:id="@+id/classify_mainlist" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="20" android:background="#fff" android:cacheColorHint="#00000000" android:divider="#fff" android:dividerHeight="1px" android:fastScrollEnabled="true" android:listSelector="#00000000" android:scrollbars="none" /> <ListView android:id="@+id/classify_morelist" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="17" android:background="#fff" android:cacheColorHint="#00000000" android:divider="#ffebebeb" android:dividerHeight="0.5px" android:fastScrollEnabled="true" android:listSelector="#00000000" android:scrollbars="none" /> </LinearLayout> </LinearLayout>
3.简陋的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"> <TextView android:id="@+id/id_tv_list_item" android:layout_width="match_parent" android:gravity="center_vertical" android:padding="10dp" android:layout_height="match_parent" /> </LinearLayout>
4.main adpter MainListBaseAdapter
package com.louis.classifymenuview; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; import java.util.Map; /** * Created by Administrator on 2016/3/17. */ public class MainListBaseAdapter extends BaseAdapter { Context context; List<Map<String,Object>> mainMapList; public int getNowSelectedIndex() { return nowSelectedIndex; } public void setNowSelectedIndex(int nowSelectedIndex) { this.nowSelectedIndex = nowSelectedIndex; this.notifyDataSetChanged();//及时通知显示 } private int nowSelectedIndex = 0; public MainListBaseAdapter(Context context, List<Map<String, Object>> mainMapList) { this.context = context; this.mainMapList=mainMapList; } @Override public int getCount() { return mainMapList.size(); } @Override public Object getItem(int position) { return mainMapList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView==null){ convertView= LayoutInflater.from(context).inflate(R.layout.list_items,null); } TextView tv_list_item= (TextView) convertView.findViewById(R.id.id_tv_list_item); tv_list_item.setText(mainMapList.get(position).get("mainName").toString()); if (position==nowSelectedIndex){ tv_list_item.setBackgroundColor(0xFFFFFFFF); }else { tv_list_item.setBackgroundColor(0xFFEBEBEB); } return convertView; } }
5。 more list adapter
package com.louis.classifymenuview; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; import java.util.Map; /** * Created by Administrator on 2016/3/17. */ public class MoreListBaseAdpter extends BaseAdapter { Context context; List<Map<String, Object>> moreMapList; private int nowSelectedIndex = 0; public MoreListBaseAdpter(Context context, List<Map<String, Object>> moreMapList) { this.context = context; this.moreMapList = moreMapList; } @Override public int getCount() { return moreMapList.size(); } @Override public Object getItem(int position) { return moreMapList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.list_items, null); } TextView tv_list_item = (TextView) convertView.findViewById(R.id.id_tv_list_item); tv_list_item.setText(moreMapList.get(position).get("moreName").toString()); if (position == nowSelectedIndex) { tv_list_item.setTextColor(0xFFB3EE3A); } else { tv_list_item.setTextColor(0xFF525252); } return convertView; } public int getNowSelectedIndex() { return nowSelectedIndex; } public void setNowSelectedIndex(int nowSelectedIndex) { this.nowSelectedIndex = nowSelectedIndex; this.notifyDataSetChanged();//及时通知显示 } }
结果
demo下载:http://download.csdn.net/detail/richiezhu/9464387
Android二级分类列表GirdView见:http://blog.csdn.net/richiezhu/article/details/50920384
相关文章推荐
- Android.mk详解
- Android之最全,最经典,最无私的资源
- Android ListView自定义Adapter使用误区
- android布局练习
- Android四大组件之Service
- Android之自定义View的监听事件
- 阅读android项目源码
- android应用加速优化与分析,兼谈launcher优化。
- Android 国际化
- Android 内部文件存储
- Android自定义控件之onLayout
- Android 服务之startService和bindService以及前台服务的创建
- Android中View的绘制过程
- Android判断当前线程是主线程的方法
- Android自定义View基础篇(一)
- Android性能优化(5-10)
- Android自定义时间轴的实现
- Android Weak Handler:可以避免内存泄漏的Handler库
- Android 连续的补间动画(Animation/Tween)
- android跨进程通知-远程服务Aidl