更新以描述所请求的代码;更新在末尾。
我试图做一些看起来应该很简单的事情,但是Android生命周期似乎不像描述的那样有效。我认为这是我的误解,而不是Android中的一个bug!
我是Android的新手,在为Windows开发Java应用程序之后,我才开始熟悉Android生命周期,所以我仍然在为许多新的想法而奋斗,特别是生命周期。
我几乎完成了我的第一个应用程序,它是基于一个RecyclerView。它显示了一家小公司的一系列销售记录(每个记录代表一次销售)。用户可以单击FloatingActionButton来报告新的销售,也可以单击或编辑或删除单个记录上的图标,以更改销售的详细信息或将其全部删除。每一件事都有自己的活动。此外,还有一个SettingsActivity来显示设置。
其中一个设置允许用户从三种不同的日期格式中进行选择,以显示销售日期。当我退出设置(通过单击back按钮)时,我希望立即使用新更改的日期格式看到可见的行,但这并没有发生。到目前为止,我只需单击按钮就可以将我带到另一个活动中,然后在我到达时单击cancel按钮;回到我的主要活动时,我会看到新的日期格式。
我不觉得我的用户应该去其他的活动;简单地从设置返回应该立即改变日期。我开始研究Android生命周期。在阅读文档时,我应该重写onResume()方法,并向控制RecyclerView的适配器发出一个notifyDataChanged(),以使其使用新的日期格式重新绑定可见的行。
不幸的是,这对我所看到的一切都没有影响。这是我的onResume:
@Override
protected void onResume() {
super.onResume();
mAdapter.notifyDataSetChanged();
}
我是不是用错误的方法做了notifyDataSetChanged()?如果没有,为什么不起作用?如果是错误的方法,我应该重写哪种方法?
有什么特别好的文字或视频教程解释生命周期,我应该阅读或观看?
更新
日期格式是在我的SettingsActivity中设置的,这是SettingsActivity模板中提供的默认格式,适合我的需要。我所接触到的只是一般的设置。我用自己的六个设置替换了模板中的所有设置。一种是日期格式,默认为YYYY DD;还有两种选择。
我的主要活动是通过菜单选项调用SettingsActivity,它从默认的SharedPreferences中获取日期格式的值。这是因为我不想对ArrayList中的每一行查找一次日期格式的值,而是对ArrayList中的所有行只查找一次。我通过其构造函数将日期格式的值传递给Adapter。在OnBindViewHolder()中使用该格式来控制日期在各种销售记录上的出现。
发布于 2018-08-13 21:22:36
为适配器定义一个set方法,
public class MyAdapter extends RecyclerView.Adapter<AdapterContactList.ViewHolder> {
private String dateFormat;
.....
public void setDateFormat(String dateFormat) {
this.dateFormat = dateFormat;
}
}
用户更改日期格式后,将其设置为适配器,然后通知数据进行更改。这意味着,您需要在notifyDataSetChanged
方法之前设置新的日期格式;因为适配器不知道新值。
@Override
protected void onResume() {
super.onResume();
String newDateFormat = getFromSharedPreferencesOrInstantly();
mAdapter.setDateFormat(newDateFormat);
mAdapter.notifyDataSetChanged();
}
https://stackoverflow.com/questions/51795946
复制相似问题