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
}
}
}