android简单的可折叠的格子列表

2024-02-01 20:58

本文主要是介绍android简单的可折叠的格子列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

需求:实现一个可以折叠列表,折叠项下一级为一个图片列表,图片列表按等宽高格子式排列,一行N个。每个折叠项子级图片列表中的图片数目不多,在10个以内。

接触安卓开发的时间不多,供大家借鉴。

在不借用开源代码只在现有平台开发的情况下,做过4种尝试:

1.使用ListView嵌套GridView

这可能是刚进入android大家庭之后最容易想到的方法,有GridView干嘛要造轮子?之前有过这种想法,但是有印象据说AdaptView嵌套会产生滚动问题,因为android的事件流是基于焦点的,从action_down开始,如果两个嵌套且都能够实现滚动,则需要重写事件分发相关部分。

再看这个题目,子项很少,不需要滚动,第一种想法就是吧GridView高度固定:

public class NoScrollGridView extends GridView {public NoScrollGridView(Context context) {super(context);}public NoScrollGridView(Context context, AttributeSet attrs) {super(context, attrs);}public NoScrollGridView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}
}
这种方法实现出来效果比较卡。


2.使用RecyclerView嵌套GridView

RecyclerView的bind相对于GridView的getView,调用频度较少。GridView同上。

效果提升不明显,并且第一级展开后界面会莫名其妙地跳来跳去,半天没定位明白是什么鬼。把GridView换成非AdaptView后,问题消失。


3.使用RecyclerView嵌套GridLayout

安卓4.0之后封装了格子布局,不用自己封装了。既然RecyclerView内嵌套AdapteView会出现莫名其妙的问题,就用它好了。

当控件宽高较小、二级项数较少时较为流畅,增加宽高后逐渐卡顿。


4.使用ExpandableListview嵌套单行

之前的控件选型失败。虽然bind调用频度低于getView,但在RecyclerView进行bind的时候还是实例化了过多的View导致卡顿。

当前想到唯一的可行方法就是用LinearLayout封装一个横向单行布局类,用来排列一行,然后父级采用ExpandableListView。

这种方法避免了卡顿,而且当子项项数特别多的时候同样适用,可以实现点击拉取成吨数据的需求。


第四种方法是暂时能想到的可行的方案。菜鸟一枚,供参考。


这篇关于android简单的可折叠的格子列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668443

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python中DataFrame转列表的最全指南

《Python中DataFrame转列表的最全指南》在Python数据分析中,Pandas的DataFrame是最常用的数据结构之一,本文将为你详解5种主流DataFrame转换为列表的方法,大家可以... 目录引言一、基础转换方法解析1. tolist()直接转换法2. values.tolist()矩阵

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

python展开嵌套列表的多种方法

《python展开嵌套列表的多种方法》本文主要介绍了python展开嵌套列表的多种方法,包括for循环、列表推导式和sum函数三种方法,具有一定的参考价值,感兴趣的可以了解一下... 目录一、嵌套列表格式二、嵌套列表展开方法(一)for循环(1)for循环+append()(2)for循环+pyPhWiFd