Android(安卓)ListView列表分组
16lz
2021-12-04
运行效果:
main.xml
<?xml version="1.0" encoding="utf-8"?>
list_items.xml
<?xml version="1.0" encoding="utf-8"?>
list_items_tag.xml
<?xml version="1.0" encoding="utf-8"?>
MyAdapter.java
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
MainActivity.java
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> mylist = new ArrayList>(); private List> splitList = new ArrayList>(); @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 mp = new HashMap(); mp.put("itemTitle", "A"); mylist.add(mp); splitList.add(mp); for (int i = 0; i < 3; i++) { Map map = new HashMap(); map.put("itemTitle", "文章1-" + i); mylist.add(map); } mp = new HashMap(); mp.put("itemTitle", "B"); mylist.add(mp); splitList.add(mp); for (int i = 0; i < 6; i++) { Map map = new HashMap(); map.put("itemTitle", "文章2-" + i); mylist.add(map); } }}
========================================================================
以上为示例所有代码,以下为说明
禁止标签项的响应事件,父类BaseAdapter中提供了isEnable的()方法,我们看看这个方法:
Java代码
- //默认情况,如果这个方法不是分割符,返回true
- //分隔符是无选中和无点击事件的
- //说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true
- public boolean isEnabled (int position)
//默认情况,如果这个方法不是分割符,返回true
//分隔符是无选中和无点击事件的
//说白了,你想不想把改position项当做分隔符,想的话就返回false,否则返回true
public boolean isEnabled (int position)
这个方法刚好用来禁用标签项的响应事件。
@Overridepublic boolean isEnabled(int position) { if(splitData.contains(listData.get(position))) { returnfalse; } returnsuper.isEnabled(position);}
现在标签项不会再有任何触控效果了,犹如一块死木板。
原地址:http://blog.sina.com.cn/s/blog_4ca9ceef0100za7f.html
更多相关文章
- Android生命周期的学习
- Android(安卓)无障碍辅助功能AccessibilityService(2)
- Android下拉列表使用方法
- Android实现各种对话框的变体
- android 公用的ViewHolder
- Android(安卓)IntentService 深入分析
- Android获得屏幕分辨率的两种方法
- android监听edittext输入事件
- JNI基本数据类型转换