谈Android中对ListView,RecycleView应用的简化

编者:李国帅

qq:9611153 微信lgs9611153

时间:2020-7-17

背景:

数据列表的展示在任何应用中都是重要的内容,android的列表类无外乎ListView,RecycleView,GridView,但是它们使用起来有些局限,于是就出现无数继承它们的列表类,用来实现下拉,拖动,手势等功能。

 

有些列表操作很复杂,但这根本就不是程序员们想要的。如果一个列表使用几百行代码,恐怕几十个表的项目,仅仅在列表部分,复制粘贴恐怕都要超过上万行代码。

 

也许我只是想显示简单一下数据,但是看上去很复杂。这代码的集成方面,JAVA和Android的搭配还真是绝配,其在自定义控件的制作,界面的展示,模块的集成方面,是从vc过来的人难以想象的。

 

问题描述:

粗看起来,要实现一个list显示,需要考虑很多方面:

         数据处理:获取数据列表

         加载list到相关布局,以及list的属性

         listitem的布局

         相关adapter以及ViewHolder

         把数据列表的数据填充到ViewHolder

         下拉刷新和加载更多,以便获取数据(可能和ScrollView冲突)(记录查询位置)

         点击ViewHolder或者里面的界面元素激发事件

         数据同步,正在加载数据的时候不允许重新请求数据

 

解决:

 

 

而实际上,使用者关心的内容并不多,使用输入输出可以看得很清楚。

一个列表必须要做的:

  1. 列表显示流程语句
  2. listitem的布局(xml)
  3. 数据处理:获取数据列表
  4. 下拉刷新和加载更多的事件回调
  5. 点击ViewHolder或者里面的界面元素激发事件回调

 

这里就用xlist为例,看一下对列表扩展和简化的一些想法思路。

 

调用页面XListActivity

 

 

点击列表项BookListItem

 

再加上一个布局list_item_book

 

 

最后

 

Android程序做的越多,越感觉越像是在搬砖头,没有技术含量。

这同时也说明,jave确是一种生命力旺盛,容易使用的语言。

 

编写这些东西,并不能避免拷贝粘贴,也只是能够尽量少的去粘贴罢了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android 实现 ListView 实时筛选可以通过以下步骤: 1. 创建 ListView:首先创建一个 ListView 控件,并填充数据。 2. 创建搜索框:在 UI 界面上添加一个搜索框,可以使用 EditText 控件实现。 3. 监听搜索框输入:给搜索框添加 TextChangedListener 监听器,实时获取用户输入的内容。 4. 进行筛选:当用户输入内容时,根据输入的内容对数据进行筛选,并更新 ListView 的显示。可以使用 Filter 进行过滤操作。 5. 更新 ListView:将过滤后的数据更新到 ListView ,可以使用 ArrayAdapter 等适配器进行数据绑定。 下面是一个简单的示例代码: ```java public class MainActivity extends AppCompatActivity { private ListView listView; private EditText editText; private ArrayAdapter<String> adapter; private List<String> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.listView); editText = (EditText) findViewById(R.id.editText); // 初始化数据 dataList = new ArrayList<>(); dataList.add("Apple"); dataList.add("Banana"); dataList.add("Cherry"); dataList.add("Durian"); dataList.add("Eggplant"); dataList.add("Fig"); dataList.add("Grape"); dataList.add("Honeydew"); dataList.add("Jackfruit"); dataList.add("Kiwi"); // 创建 ArrayAdapter 适配器 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList); listView.setAdapter(adapter); // 监听搜索框输入 editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // 根据输入的内容进行筛选 adapter.getFilter().filter(s); } @Override public void afterTextChanged(Editable s) { } }); } } ``` 在上面的代码,我们使用 ArrayAdapter 作为适配器,并通过调用 getFilter() 方法获取 Filter 对象进行数据过滤。在搜索框输入时,监听器会调用 filter() 方法进行实时筛选,并更新 ListView 的显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值