Android(安卓)列表之分组ListView
16lz
2022-04-03
运行效果:
main.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <ListViewandroid:layout_width="fill_parent"
- android:layout_height="wrap_content"android:id="@+id/MyListView">
- </ListView>
- </LinearLayout>
list_items.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="fill_parent"
- android:layout_height="wrap_content"android:id="@+id/myListItem"
- android:paddingBottom="4dip"android:paddingLeft="12dip"
- android:paddingRight="12dip">
- <TextViewandroid:layout_height="wrap_content"
- android:layout_width="fill_parent"android:id="@+id/itemTitle"
- android:textSize="20dip"/>
- </LinearLayout>
list_items_tag.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:background="#555555"android:paddingLeft="10dip">
- <TextViewandroid:id="@+id/itemTitle"android:layout_width="wrap_content"
- android:layout_height="20dip"android:textColor="#ffffff"
- android:gravity="center_vertical"/>
- </LinearLayout>
MyAdapter.java
- packagecom.iaiai;
- importjava.util.List;
- importjava.util.Map;
- importandroid.content.Context;
- importandroid.view.LayoutInflater;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.widget.BaseAdapter;
- importandroid.widget.TextView;
- /**
- *
- *<p>
- *Title:MyAdapter.java
- *</p>
- *<p>
- *E-Mail:176291935@qq.com
- *</p>
- *<p>
- *QQ:176291935
- *</p>
- *<p>
- *Http:iaiai.iteye.com
- *</p>
- *<p>
- *Createtime:2011-10-10
- *</p>
- *
- *@author丸子
- *@version0.0.1
- */
- publicclassMyAdapterextendsBaseAdapter{
- privateLayoutInflatermInflater;
- privateList<Map<String,String>>listData;
- privateList<Map<String,String>>splitData;
- publicMyAdapter(Contextcontext,
- List<Map<String,String>>listData,
- List<Map<String,String>>splitData){
- this.mInflater=LayoutInflater.from(context);
- this.listData=listData;
- this.splitData=splitData;
- }
- @Override
- publicintgetCount(){
- returnlistData.size();
- }
- @Override
- publicObjectgetItem(intposition){
- returnlistData.get(position);
- }
- @Override
- publiclonggetItemId(intposition){
- returnposition;
- }
- @Override
- publicbooleanisEnabled(intposition){
- if(splitData.contains(listData.get(position))){
- returnfalse;
- }
- returnsuper.isEnabled(position);
- }
- @Override
- publicViewgetView(finalintposition,ViewconvertView,ViewGroupparent){
- if(splitData.contains(listData.get(position))){
- convertView=mInflater.inflate(R.layout.list_items_tag,null);
- }else{
- convertView=mInflater.inflate(R.layout.list_items,null);
- }
- TextViewtextView=(TextView)convertView.findViewById(R.id.itemTitle);
- textView.setText(listData.get(position).get("itemTitle"));
- returnconvertView;
- }
- }
MainActivity.java
- packagecom.iaiai;
- importjava.util.ArrayList;
- importjava.util.HashMap;
- importjava.util.List;
- importjava.util.Map;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.ListView;
- /**
- *
- *<p>
- *Title:MainActivity.java
- *</p>
- *<p>
- *E-Mail:176291935@qq.com
- *</p>
- *<p>
- *QQ:176291935
- *</p>
- *<p>
- *Http:iaiai.iteye.com
- *</p>
- *<p>
- *Createtime:2011-10-10
- *</p>
- *
- *@author丸子
- *@version0.0.1
- */
- publicclassMainActivityextendsActivity{
- privateList<Map<String,String>>mylist=newArrayList<Map<String,String>>();
- privateList<Map<String,String>>splitList=newArrayList<Map<String,String>>();
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ListViewlist=(ListView)findViewById(R.id.MyListView);
- setData();//设置数据
- //配置适配器
- MyAdapteradapter=newMyAdapter(this,mylist,splitList);//布局里的控件id
- //添加并且显示
- list.setAdapter(adapter);
- }
- privatevoidsetData(){
- //组织数据源
- Map<String,String>mp=newHashMap<String,String>();
- mp.put("itemTitle","A");
- mylist.add(mp);
- splitList.add(mp);
- for(inti=0;i<3;i++){
- Map<String,String>map=newHashMap<String,String>();
- map.put("itemTitle","文章1-"+i);
- mylist.add(map);
- }
- mp=newHashMap<String,String>();
- mp.put("itemTitle","B");
- mylist.add(mp);
- splitList.add(mp);
- for(inti=0;i<6;i++){
- Map<String,String>map=newHashMap<String,String>();
- map.put("itemTitle","文章2-"+i);
- mylist.add(map);
- }
- }
- }
========================================================================
以上为示例所有代码,以下为说明
禁止标签项的响应事件,父类BaseAdapter中提供了isEnable的()方法,我们看看这个方法:
- //默认情况,如果这个方法不是分割符,返回true
- //分隔符是无选中和无点击事件的
- //说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true
- publicbooleanisEnabled(intposition)
这个方法刚好用来禁用标签项的响应事件。
- @Override
- publicbooleanisEnabled(intposition){
- if(splitData.contains(listData.get(position))){
- returnfalse;
- }
- returnsuper.isEnabled(position);
- }
现在标签项不会再有任何触控效果了,犹如一块死木板。
更多相关文章
- Android(安卓)开发之webview页面返回到最顶关闭
- Android——简单对话框
- Android(安卓)Robotium的自动化代码
- ‘void android.view.View.dispatchDetachedFromWindow() on a n
- (Android) Eclipse "launching delegate" 停在 27%的解决方法
- android studio 使用getActionBar返回NULL
- Android获取本机局域网IP的方法
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用