Java Android-如何在更改活动后保存复选框状态(选中/未选中)
我在StackOverflow中搜索了一下,但还没有找到正确的答案 我已经创建了一个Java Android-如何在更改活动后保存复选框状态(选中/未选中),java,android,listview,checkbox,adapter,Java,Android,Listview,Checkbox,Adapter,我在StackOverflow中搜索了一下,但还没有找到正确的答案 我已经创建了一个列表视图(一个复选框的迭代+项目视图),并通过我的customAdapter(扩展了BaseAdapter)填充它 我有一个按钮,它获取值并通过Toast打印在屏幕上 到目前为止,一切顺利 下一步,我仍然在MainActivity中有按钮,但是ListView现在位于子活动中,我可以通过单击图像(ImageView放置在MainActivity中)来访问该子活动。我仍然可以勾选复选框,但我面临两个问题: 我仍然无
列表视图
(一个复选框的迭代
+项目视图
),并通过我的customAdapter(扩展了BaseAdapter)填充它
我有一个按钮,它获取值并通过Toast打印在屏幕上
到目前为止,一切顺利
下一步,我仍然在MainActivity
中有按钮,但是ListView
现在位于子活动中,我可以通过单击图像(ImageView
放置在MainActivity
中)来访问该子活动。我仍然可以勾选复选框,但我面临两个问题:
main活动
,它们将在屏幕上打印(或操纵)main活动
并再次按下图像,选中的每个复选框
都不再被选中(它们回到默认状态)ListView
-customAdapter
,带有ViewHolder
实现,…),但万一需要,请告诉我
提前多谢 您可以将选中的复选框放入SharedReference中。然后将listview初始化代码移动到活动的
onResume
方法
示例处理共享引用的类
数据:
class DataHandler {
private final SharedPreferences dataStore;
DataHandler(Context mContext) {
dataStore = mContext.getSharedPreferences("appname", Context.MODE_PRIVATE);
}
int which() {
return dataStore.getInt("some_key",0);
}
void setCheckedItem(int itemwhat) {
dataStore.edit().putInt("some_key",itemwhat).apply();
}
}
对于多个值,您可以将它们放入一个数组中,然后使用toString()
方法将它们转换为字符串并保存。要获得这些值,请执行以下操作:
String x = "2,3,4,5"; //assume
String[] y = new String[]{x};
int checkablepositions = Integer.parseInt(y[0]); // y[0]....y[y.length-1]
现在,在MainActivity的onResume()
,假设您已将ListView初始化为“mainList”
CheckBox x1y2z3 = (CheckBox)mainList.getChildAt(new DataHandler(getBaseContext).which());
x1y2z3.setChecked(true);
为了保存项目
我建议你在提醒对话框中而不是在祝酒词中展示它们。然后设置一个肯定按钮,从下面的代码中获取值并保存它们
或者,如果直接从listviewonClick保存值:
mainList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
new DataHandler(getBaseContext()).setCheckedItem(position);
}
});
mainList.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
新的DataHandler(getBaseContext()).setCheckedItem(位置);
}
});
就这样。我真的是编程新手(你可以看到我的StackOverFlow代表),但希望它能帮助你
主要概念是:存储值→ 获取值→ 解析值→ 在UI上显示它。您好,谢谢您的回复。我无法将您的代码放入我的程序中。可能是我的错。我将为我的问题添加一些细节,我希望它能有所帮助。基本上,我不需要检索值(我已经为它创建了一个DataModel类),但问题是将这些值/对象从子活动传递到主活动。而且,我还需要保存复选框状态,如果我需要返回到子活动,则复选框将保持其状态(选中或未选中),直到应用程序关闭。