Android中Listview分类显示数据

一, 概述
在Android开发中,很多时候会有这样的需求,在数据列表中,按类型来分模块来展示数据,比如联系人列表就是一个非常典型的例子,我们往往会按照姓氏来显示联系人电话列表,这种数据展示的方式非常简单明了,方便,这种效果的实现其实非常简单,下面就从源码对其进行剖析。

二,实现过程
1,效果图:
这里写图片描述

2.创建一个实体类,包含两个属性:(1)分类名;(2)分类数据:
源码:

public class Category {
    private Adapter mAdapter;
    private String mTitle;

    public Category() {

    }

    public Category(Adapter mAdapter, String mTitle) {
        this.mAdapter = mAdapter;
        this.mTitle = mTitle;
    }

    public Adapter getmAdapter() {
        return mAdapter;
    }

    public void setmAdapter(Adapter mAdapter) {
        this.mAdapter = mAdapter;
    }

    public String getmTitle() {
        return mTitle;
    }

    public void setmTitle(String mTitle) {
        this.mTitle = mTitle;
    }
}

这里非常简单,不做任何解释.

2.自定义适配器,这是这个实例中最关键的一部分:
直接贴上源码:


public abstract class CategoryAdapter extends BaseAdapter{
   

    //用于存储分类和类型数据的集合,这里每一个对象为一个分类和其相对应的数据。
    private List<Category> categori
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用ListView将SQLite数据数据按照分类显示出来,需要先对数据库进行查询,将查询结果按照分类进行分组,然后将分组后的数据显示ListView。下面是一个基本的实现示例: 1. 查询数据数据,并按照分类分组。 ```java String query = "SELECT category, name FROM mytable ORDER BY category"; Cursor cursor = db.rawQuery(query, null); Map<String, List<String>> data = new HashMap<>(); while (cursor.moveToNext()) { String category = cursor.getString(cursor.getColumnIndex("category")); String name = cursor.getString(cursor.getColumnIndex("name")); if (!data.containsKey(category)) { data.put(category, new ArrayList<>()); } data.get(category).add(name); } ``` 在上述代码,首先查询数据数据,将查询结果按照分类分组,存储到一个Map对象。 2. 将分组后的数据显示ListView。 ```java List<String> categories = new ArrayList<>(data.keySet()); ListView listView = findViewById(R.id.listView); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, categories); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String category = categories.get(position); List<String> items = data.get(category); ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, items); listView.setAdapter(adapter); } }); ``` 在上述代码,首先将分组后的分类列表显示ListView。当用户点击某个分类时,根据该分类从Map对象获取该分类下的所有数据,并将数据显示ListView。 可以根据实际需求进行调整和优化,例如使用自定义的Adapter来实现更复杂的布局和样式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值