在我的应用程序中,我有一个列表视图和一个用于创建相册的按钮(通过单击按钮应用程序,新项目添加到列表视图),通过单击每个列表视图项目,您可以转到该相册并上传/拍摄照片以供显示
用于在拍摄/选择后保存和检索照片我使用SharedPrefrence来保存和检索图像路径。如你所见,我不能有预定义的SharedPrefrence,所以我使用这个我自己制作的方法:在listview OnItemClickListener中我做了这个" str"字符串并将其置于意图中它将被传递到我的第一个专辑页面:
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
String str = new String("album" + arg2);
Intent intent = new Intent(Albums.this, MainA.class);
intent.putExtra("extra", str);
startActivity(intent);
}
});
在这个过程之后,我在我的新活动中使用这个字符串作为我的共享偏见:
String str = getIntent().getExtras().getString("extra");
SharedPreferences settings = getSharedPreferences(str, 0);
通过这种方式,一切都很完美,但除非例如用户删除第二张专辑(Lisview中的第二个专辑),这导致第三张专辑成为第二张专辑,因为我使用了位置int来指定共享优势,它将彻底销毁。 / p>
我不知道你是否能理解我的方式=),但如果你做了我该怎么做才能避免这种情况?
这种方式对我来说是最好的方式吗?感谢。
编辑:
删除listview项目代码:
public void deletetask(String t){
if (null == itemArrey) {
itemArrey = new ArrayList<String>();
}
itemArrey.remove(t);
//save the task list to preference
b1s = getSharedPreferences("pref", Context.MODE_PRIVATE);
try {
b1s.edit().putString("array", ObjectSerializer.serialize(itemArrey)).commit();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
男人这没有道理。为什么你不能使用sql?即使您要将SharedPreferences用于商店,也应该创建一个名为album的对象:
Class album {
private long id;
private String path;
}
然后在OnItemClickListener上,arg3将是id(您必须在适配器类的getId上传递它,使用自定义适配器扩展baseAdapter,用户可以使用相册列表,这并不难)。