Android 使用自定义视图刷新适配器数据的最佳实践

Android 使用自定义视图刷新适配器数据的最佳实践,android,listview,checkbox,android-recyclerview,Android,Listview,Checkbox,Android Recyclerview,我有以下自定义视图: |--------------------| |[]文本视图| |--------------------| 这只是一个简单的复选框和文本视图。此视图显示多次(月内天数),通过列表(RecylverView)显示在屏幕上 为此,我有一个片段,它将首先从数据库中读取数据,然后将这些数据放入列表中 String[] data = getDataFromDB(); mRecycler.setAdapter(new MyAdapter(data)); 假设其他每个项目都有一个

我有以下自定义视图:

|--------------------|
|[]文本视图|
|--------------------|

这只是一个简单的
复选框
文本视图
。此
视图
显示多次(月内天数),通过列表(
RecylverView
)显示在屏幕上

为此,我有一个
片段
,它将首先从数据库中读取数据,然后将这些数据放入列表中

String[] data = getDataFromDB();
mRecycler.setAdapter(new MyAdapter(data));
假设其他每个项目都有一个选中的
复选框。
因此,我们有一个如下列表(例如4项):

|--------------------|
|[]文本视图|
|--------------------|
|--------------------|
|[X]文本视图|
|--------------------|
|--------------------|
|[]文本视图|
|--------------------|
|--------------------|
|[X]文本视图|
|--------------------|

用户现在可以选中或取消选中
复选框
(这是一个复选框:)。在程序员方面,数据库中的数据数组也必须更新。因为,如果我不这样做并且用户滚动,那么应该使用旧数据创建特定的列表项。是的,这就是回收商的目的:)

无论如何。当用户选中/取消选中时,我需要更新数据。 我的问题是:这样做的最佳实践是什么

一个想法是在适配器中为每个
视图设置一个
接口
,以便在发生更改时得到通知。每个
复选框
都成为一个侦听器,当用户单击
复选框
时将调用该侦听器。侦听器接收到一个通知(来自适配器),它可以更新数据

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

    @Override
    public void onBindViewHolder(MyViewHolder myViewHolder, int position) {
        myViewHolder.myView.setModel(data.get(position));
        myViewHolder.myCheckBox.setOnCheckedChangeListener(new OnChanged) {
            // TODO: Update data and refresh list/adapter
        }
    }

}
这两个想法都不是很好。使用自定义
视图
s刷新
适配器
数据的任何其他想法或模式

注:
这是一个非常基本的自定义
视图
。我的应用程序实际上有多个
视图
(4个
按钮
,其中有文本更改、1个
复选框
和一个
编辑文本
),但想法相同。

看一看。OnClick问题与您的问题非常相似。这篇文章对我帮助很大

我认为这不能解决这个问题。问题是关于在
复选框
更改时管理支持
适配器
的数据的最佳方法。是的,这正是我所寻找的答案。但这有一点帮助。你说这些想法不是很好。你能解释一下原因吗?
public class TimeTrackingCardView extends CardView {

    public void setListThings(String[] data, MyAdapter adapter) {
        myCheckBox.setOnCheckedChangeListener(new OnChanged) {
            // TODO: Update data and refresh list/adapter
        }
    }

}