我正在开发一个应用程序,它可以管理我有两个活动的任务。第一个活动是一个简单的列表视图,其中显示了一个用户列表。第二个活动是多选列表视图,显示与该用户关联的任务。我设法达到我的第一个目标,即使用共享首选项存储复选框的状态。我的问题是,当我保存用户的复选框状态时,当您看到另一个用户的任务时,不再检查这些任务。 我怎样才能解决我的问题。
这就是我填写清单的方式:
mList = (ListView) findViewById(android.R.id.list);
final DbAdapter db = new DbAdapter(this);
db.open();
data = db.getAllTasks(getIntent().getExtras().get("nameUser").toString());
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,data);
mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mList.setAdapter(adapter);
这是我选择要显示任务的用户的方式:
mList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
final String text = (String) mList.getItemAtPosition(position);
}
});
这是我使用SharedPreferences保存状态的方法:
private void LoadSelections() {
// if the selections were previously saved load them
SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE);
if (settingsActivity.contains(SETTING_DB)) {
String savedItems = settingsActivity
.getString(SETTING_DB, "");
this.selectedItems.addAll(Arrays.asList(savedItems.split(",")));
int count = this.mList.getAdapter().getCount();
for (int i = 0; i < count; i++) {
String currentItem = (String) this.mList.getAdapter()
.getItem(i);
if (this.selectedItems.contains(currentItem)) {
this.mList.setItemChecked(i, true);
}
}
}
}
private void SaveSelections() {
// save the selections in the shared preference in private mode for the user
SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settingsActivity.edit();
String savedItems = getSavedItems();
prefEditor.putString(SETTING_DB , savedItems);
prefEditor.commit();
}
private String getSavedItems() {
String savedItems = "";
int count = this.mList.getAdapter().getCount();
for (int i = 0; i < count; i++) {
if (this.mList.isItemChecked(i)) {
if (savedItems.length() > 0) {
savedItems += "," + this.mList.getItemAtPosition(i);
} else {
savedItems += this.mList.getItemAtPosition(i);
}
}
}
return savedItems;
}
我的问候。
答案 0 :(得分:2)
作为“偏好设置”的一部分,您需要包含与这些特定任务相关的用户。为此目的使用SharredPreferrences并不理想(最好只使用数据库而不是IMO),但最后你需要找到特定用户的选定项目,然后当用户被选中时你可以看到“which”项目在哪里选择。