Java 按正确顺序保存和显示ArrayList
我是一名初级开发人员,对如何保存屏幕实例几乎没有经验 活动:Java 按正确顺序保存和显示ArrayList,java,android,arrays,listview,Java,Android,Arrays,Listview,我是一名初级开发人员,对如何保存屏幕实例几乎没有经验 活动: handler = new Handler() ; ListElementsArrayList = new ArrayList<String>(Arrays.asList(ListElements)); adapter = new ArrayAdapter<String>(Processing.this, android.R.layout.simple_list_i
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();
}
});
我的应用程序所做的是,用户每小时输入一些已完成的(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);
}
@覆盖
受保护的void onPause(){
super.onPause();
//设置值
SharedReferences=GetSharedReferences(“MYPREFS”,MODE_PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
Set=newhashset();
set.addAll(listlementsarraylist);
编辑器.putStringSet(“列表”,set);
editor.apply();
}
@凌驾
恢复时公开作废(){
super.onResume();
SharedReferences=GetSharedReferences(“MYPREFS”,MODE_PRIVATE);
SharedReferences.Editor=SharedReferences.edit();
Set Set=SharedReferences.getStringSet(“列表”,null);
listlementsarraylist.addAll(set);
setAdapter(适配器);
}
要添加到列表的代码:
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();
}
});
handler=newhandler();
ListElementsArrayList=newarraylist(Arrays.asList(ListElements));
适配器=新阵列适配器(Processing.this,
android.R.layout.simple\u list\u item\u 1,
列表元素列表
);
setAdapter(适配器);
BtnShipperCompleted.setOnClickListener(新视图.OnClickListener()){
@凌驾
公共void onClick(视图){
ShipperCompleted=textView.getText().toString();
添加(shipperperscompleted+“-Hour”+Hour++);
adapter.notifyDataSetChanged();
}
});
尽管我在onResume()方法上收到一个空指针。因此,我将代码添加到重新加载按钮。虽然现在列表出现了问题(见截图),但它仍然有效
我怎样才能:
也许这不是您正在等待的答案,但请尝试使用数据库,因为共享首选项本身会存储一个无序的元素列表(set)。或者,您应该对列表进行排序,然后将其设置为适配器。如果要使用共享首选项,则需要保存列表大小并使用for循环保存列表项。我的回答可能会有帮助。