如何保持读取状态,如回收站视图项中的gmail应用程序?

时间:2018-06-27 09:02:51

标签: java android android-recyclerview

当用户单击任何recyclerview视图项目时,我将开发一个应用程序,文本颜色应更改并且可以正常工作,但是当我再次打开我的应用程序时,文本颜色仍保持不变,我使用共享首选项保存状态,但它不起作用解? 代码:

ItemClickSupport.addTo(recyclerView).setOnItemClickListener(
        new ItemClickSupport.OnItemClickListener() {

            @Override
            public void onItemClicked(RecyclerView recyclerView, int position, View v) {
                alarmDao = alarmDaos.get(position);
                alarmDao.setRead(true);
                alarmDaos.set(position, alarmDao);
                alarmAdapter.notifyDataSetChanged();
                Intent intent = new Intent(getContext(), NotificatinActivity.class);
                startActivity(intent);

                try {
                    SharedPreferences pref = getActivity().getSharedPreferences("MyPref", MODE_PRIVATE);
                    SharedPreferences.Editor editor = pref.edit();
                    editor.putBoolean("isRad", alarmDao.isRead());
                    editor.putString("string", String.valueOf(alarmDao));
                    editor.apply();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
);

4 个答案:

答案 0 :(得分:0)

您需要在recyclerview适配器中检查sharedprefernce值 并在bindholder中设置颜色。 即,在bindholder中,如果单击设置了所选颜色而没有单击设置了另一种颜色

sharedprefrence并不是一个好的解决方案,因为所有位置状态都应单击保存或不保存。如果要使用sharedprefernce,请将其设置为可定位并保存在其中的状态数组。

每个位置都需要状态数组或使用sqllite

答案 1 :(得分:0)

使用SqLite数据库,在数据库中保存项目列表,并在表中包括ReadUnRead列。每当用户单击将ReadUnRead设置为1的项目,并在Recycler Adapter OnBindView中单击时,任何将ReadUnRead等于1的项目都会更改其颜色。

答案 2 :(得分:0)

此值不应存储在SharedPreferences中,因为它是要显示的对象的一部分。

由于它是DAO,这意味着您在某个地方有一个数据库。因此,当用户选择项目时,您将更新isRead字段并更新数据库。

然后,当您想再次显示列表时,只需检查isRead是对还是假就可以相应地显示项目的颜色。

答案 3 :(得分:0)

您需要创建一个database并为其创建一个像true.false这样的Boolean变量,并在该变量中设置一个值(如果单击该值,然后将其更改为true)。或其他解决方案是您需要创建一个s hared preference并从中设置并获取一个值,但我建议您使用database