首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Android ListView列表分组

Android ListView列表分组

作者头像
forrestlin
发布2022-04-02 10:11:44
发布2022-04-02 10:11:44
1.4K0
举报
文章被收录于专栏:蜉蝣禅修之道蜉蝣禅修之道

运行效果:

main.xml

[java] view plain copy

代码语言:javascript
复制
 <?xml version="1.0" encoding="utf-8"?>  
  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  
   android:orientation="horizontal" android:layout_width="fill_parent" 
  
   android:layout_height="fill_parent">  
  
   <ListView android:layout_width="fill_parent" 
  
    android:layout_height="wrap_content" android:id="@+id/MyListView">  
  
   </ListView>  
  
 </LinearLayout>  

list_items.xml

[java] view plain copy

代码语言:javascript
复制
  
  
 <?xml version="1.0" encoding="utf-8"?>  
  
 <LinearLayout xmlns: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">  
  
   <TextView android:layout_height="wrap_content" 
  
    android:layout_width="fill_parent" android:id="@+id/itemTitle" 
  
    android:textSize="20dip" />  
  
 </LinearLayout>  

list_items_tag.xml

[java] view plain copy

代码语言:javascript
复制
 <?xml version="1.0" encoding="utf-8"?>  
  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  
   android:layout_width="fill_parent" android:layout_height="wrap_content" 
  
   android:background="#555555" android:paddingLeft="10dip">  
  
   <TextView android:id="@+id/itemTitle" android:layout_width="wrap_content" 
  
    android:layout_height="20dip" android:textColor="#ffffff" 
  
    android:gravity="center_vertical" />  
  
 </LinearLayout>  

MyAdapter.java

[java] view plain copy

代码语言:javascript
复制
 package com.iaiai;  
  
  
  
 import java.util.List;  
  
 import java.util.Map;  
  
  
  
 import android.content.Context;  
  
 import android.view.LayoutInflater;  
  
 import android.view.View;  
  
 import android.view.ViewGroup;  
  
 import android.widget.BaseAdapter;  
  
 import android.widget.TextView;  
  
  
  
 public class MyAdapter extends BaseAdapter {  
  
  
  
  private LayoutInflater mInflater;  
  
  
  
  private List<Map<String, String>> listData;  
  
  
  
  private List<Map<String, String>> splitData;  
  
  
  
  public MyAdapter(Context context,  
  
      List<Map<String, String>> listData,  
  
      List<Map<String, String>> splitData) {  
  
  this.mInflater = LayoutInflater.from(context);  
  
  this.listData = listData;  
  
  this.splitData = splitData;  
  
   }  
  
  
  
  @Override 
  
  public int getCount() {  
  
  return listData.size();  
  
   }  
  
  
  
  @Override 
  
  public Object getItem(int position) {  
  
  return listData.get(position);  
  
   }  
  
  
  
  @Override 
  
  public long getItemId(int position) {  
  
  return position;  
  
   }  
  
  
  
  @Override 
  
  public boolean isEnabled(int position) {  
  
  if (splitData.contains(listData.get(position))) {  
  
  return false;  
  
    }  
  
  return super.isEnabled(position);  
  
   }  
  
  
  
  @Override 
  
  public View getView(final int position, View convertView, ViewGroup parent) {  
  
  if (splitData.contains(listData.get(position))) {  
  
      convertView = mInflater.inflate(R.layout.list_items_tag, null);  
  
    } else {  
  
      convertView = mInflater.inflate(R.layout.list_items, null);  
  
    }  
  
  
  
    TextView textView = (TextView) convertView.findViewById(R.id.itemTitle);  
  
    textView.setText(listData.get(position).get("itemTitle"));  
  
  
  
  return convertView;  
  
   }  
 }  

MainActivity.java

[java] view plain copy

代码语言:javascript
复制
 package com.iaiai;  
  
  
  
 import java.util.ArrayList;  
  
 import java.util.HashMap;  
  
 import java.util.List;  
  
 import java.util.Map;  
  
  
  
 import android.app.Activity;  
  
 import android.os.Bundle;  
  
 import android.widget.ListView;  
  
  
  
 public class MainActivity extends Activity {  
  
  
  
  private List<Map<String, String>> mylist = new ArrayList<Map<String, String>>();  
  
  private List<Map<String, String>> splitList = new ArrayList<Map<String, String>>();  
  
  
  
  @Override 
  
  protected void onCreate(Bundle savedInstanceState) {  
  
  super.onCreate(savedInstanceState);  
  
    setContentView(R.layout.main);  
  
  
  
    ListView list = (ListView) findViewById(R.id.MyListView);  
  
  
  
    setData(); // 设置数据 
  
  
  
  // 配置适配器 
  
    MyAdapter adapter = new MyAdapter(this, mylist, splitList); // 布局里的控件id 
  
  // 添加并且显示 
  
    list.setAdapter(adapter);  
  
   }  
  
  
  
  private void setData() {  
  
  // 组织数据源 
  
    Map<String, String> mp = new HashMap<String, String>();  
  
    mp.put("itemTitle", "A");  
  
    mylist.add(mp);  
  
    splitList.add(mp);  
  
  
  
  for (int i = 0; i < 3; i++) {  
  
      Map<String, String> map = new HashMap<String, String>();  
  
      map.put("itemTitle", "文章1-" + i);  
  
      mylist.add(map);  
  
    }  
  
  
  
    mp = new HashMap<String, String>();  
  
    mp.put("itemTitle", "B");  
  
    mylist.add(mp);  
  
    splitList.add(mp);  
  
  
  
  for (int i = 0; i < 6; i++) {  
  
      Map<String, String> map = new HashMap<String, String>();  
  
      map.put("itemTitle", "文章2-" + i);  
  
      mylist.add(map);  
  
    }  
  
   }  
 }  

======================================================================== 以上为示例所有代码,以下为说明 禁止标签项的响应事件,父类BaseAdapter中提供了isEnable的()方法,我们看看这个方法:

Java代码

代码语言:javascript
复制
//默认情况,如果这个方法不是分割符,返回true  
//分隔符是无选中和无点击事件的   
//说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true  
public boolean isEnabled (int position)  

//默认情况,如果这个方法不是分割符,返回true

//分隔符是无选中和无点击事件的

//说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true

public boolean isEnabled (int position)

这个方法刚好用来禁用标签项的响应事件。

[java] view plain copy

代码语言:javascript
复制
 @Override 
  
 public boolean isEnabled(int position) {  
  
  if(splitData.contains(listData.get(position))) {  
  
    returnfalse;  
  
   }  
  
   returnsuper.isEnabled(position);  
  
 }  

现在标签项不会再有任何触控效果了,犹如一块死木板。

原地址:http://blog.sina.com.cn/s/blog_4ca9ceef0100za7f.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档