java - 以正确的顺序保存和显示 ArrayList
问题描述
我是一名初级开发人员,我对如何保存屏幕实例的经验很少。
活动:
我的应用程序所做的是用户每小时输入已完成 (X) 的数量。我想做的是,当用户离开此页面并转到另一个活动,然后返回时,列表将保留。
我尝试使用此代码:
@Override
protected void onPause() {
super.onPause();
//Set the values
sharedPreferences = getSharedPreferences("MYPREFS", MODE_PRIVATE );
SharedPreferences.Editor editor = sharedPreferences.edit();
Set<String> set = new HashSet<String>();
set.addAll(ListElementsArrayList);
editor.putStringSet("list", set);
editor.apply();
}
@Override
public void onResume() {
super.onResume();
sharedPreferences = getSharedPreferences("MYPREFS", MODE_PRIVATE );
SharedPreferences.Editor editor = sharedPreferences.edit();
Set<String> set = sharedPreferences.getStringSet("list", null);
ListElementsArrayList.addAll(set);
listView.setAdapter(adapter);
}
添加到列表的代码:
handler = new Handler() ;
ListElementsArrayList = new ArrayList<String>(Arrays.asList(ListElements));
adapter = new ArrayAdapter<String>(Processing.this,
android.R.layout.simple_list_item_1,
ListElementsArrayList
);
listView.setAdapter(adapter);
btnShippersCompleted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shippersCompleted = textView.getText().toString();
ListElementsArrayList.add(shippersCompleted + "- Hour " + Hour++);
adapter.notifyDataSetChanged();
}
});
尽管我在 onResume() 方法上收到了一个空指针。所以我将代码添加到了 RELOAD 按钮。尽管现在列表出现故障,但它正在工作(见屏幕截图)。
我怎样才能:
消除重新加载按钮,以便列表自动保留
按照保存的顺序重新加载列表。
解决方案
也许这不是您正在等待的答案,但请尝试使用数据库,因为共享首选项本身存储元素(集合)的无序列表。或者您应该对列表进行排序,然后才将其设置为适配器。
推荐阅读
- java - 使用 JDBI 3 执行任意 SQL(文件)
- r - 插入符号包中多个列的 createDataPartition
- python - 将字典值映射到另一个字典的最佳方法是什么
- sql-server - SQL 查询 - 按几列过滤有效和无效数据
- substring - 如何用可变数量的前导零填充字符串?
- autodesk-forge - 是否可以更改上传的文件?
- reactjs - 在 TS 中,如何定义子属性?
- javascript - 如果使用谷歌应用脚本达到条件,如何更新每行的现有谷歌工作表
- python - 在嵌套列表中查找唯一元素
- dialogflow-es - Google 对话流服务名称中的嵌入空格