识别listview中点击项目的最佳选项?

时间:2014-08-10 06:19:27

标签: android listview android-listview

在我的应用程序中,我有一个列表视图和一个用于创建相册的按钮(通过单击按钮应用程序,新项目添加到列表视图),通过单击每个列表视图项目,您可以转到该相册并上传/拍摄照片以供显示

用于在拍摄/选择后保存和检索照片我使用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();
    }
}

1 个答案:

答案 0 :(得分:0)

男人这没有道理。为什么你不能使用sql?即使您要将SharedPreferences用于商店,也应该创建一个名为album的对象:

Class album {
    private long id;
    private String path;
}

然后在OnItemClickListener上,arg3将是id(您必须在适配器类的getId上传递它,使用自定义适配器扩展baseAdapter,用户可以使用相册列表,这并不难)。