Java Android:使用Perst Lite持久化数据,如何持久化删除的数据?

Java Android:使用Perst Lite持久化数据,如何持久化删除的数据?,java,android,listview,persistence,persist,Java,Android,Listview,Persistence,Persist,我有一个应用程序,它的电影列表视图在strings.xml中声明为字符串数组。与3个字符串数组相对应的每个ListView行中有3个元素,即Title、Gross和Date。用户可以通过单击菜单中的添加按钮添加电影,他/她将被发送到第二个屏幕,其中包含3个编辑文本,他/她可以在其中添加他/她的新电影的详细信息。同样,用户也可以删除和编辑条目 我使用PerstLite作为在代码中保存数据更改的一种方法,但是,我只能执行“添加”功能。这是我的密码: 我的OnCreate: String dat

我有一个应用程序,它的电影列表视图在strings.xml中声明为字符串数组。与3个字符串数组相对应的每个ListView行中有3个元素,即Title、Gross和Date。用户可以通过单击菜单中的添加按钮添加电影,他/她将被发送到第二个屏幕,其中包含3个编辑文本,他/她可以在其中添加他/她的新电影的详细信息。同样,用户也可以删除和编辑条目

我使用PerstLite作为在代码中保存数据更改的一种方法,但是,我只能执行“添加”功能。这是我的密码:

我的OnCreate:

   String databasePath = getAbsolutePath("movies.dbs");

    // open the database
    db.open(databasePath, 40 * 1024);

    // check if a root object is present in this file
    Index<Lab8_082588FetchDetails> root = (Index<Lab8_082588FetchDetails>) db
            .getRoot();
    if (root == null) {
        // Root is not yet defined: storage is not initialized
        root = (Index) db.createIndex(String.class, false);
        String[] titleList = getResources().getStringArray(
                R.array.title_array);
        String[] grossList = getResources().getStringArray(
                R.array.gross_array);
        String[] dateList = getResources().getStringArray(
                R.array.date_array);
        for (int i = 0; i < titleList.length; i++) {
            Lab8_082588FetchDetails item1 = new Lab8_082588FetchDetails();
            item1.setTitle(titleList[i]);
            item1.setDate(dateList[i]);
            item1.setGross(grossList[i]);
            root.put(item1.getTitle(), item1);
            db.setRoot(root);
        }

    }

    String filter = "";
    ArrayList<Lab8_082588FetchDetails> items = root.getPrefixList(filter);
    results = new ArrayList<Lab8_082588FetchDetails>();

    for (int i = 0; i < items.size(); i++) {
        Lab8_082588FetchDetails sr = new Lab8_082588FetchDetails();
        sr.setTitle(items.get(i).getTitle());
        sr.setGross(items.get(i).getGross());
        sr.setDate(items.get(i).getDate());
        results.add(sr);
    }

    adapter = new SampleCustomAdapter(results);
    setListAdapter(adapter);

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);
    registerForContextMenu(lv);
}
我的问题是:我已经设法弄明白了

   rootAdd.put(newMovie.getTitle(), newMovie);
            db.setRoot(rootAdd);
是进行添加的部分,但是,由于缺少Internet资源,并且没有函数列表,我无法找出与删除函数对应的其他函数

更新:

我还尝试在delete中使用这一行,如下所示:

case R.id.contextdelete:
        int pos = info.position;
        String title = results.get(info.position).getTitle();
        results.remove(pos);
        adapter.notifyDataSetChanged();
        Index<Lab8_082588FetchDetails> rootDelete =   (Index<Lab8_082588FetchDetails>) db
                .getRoot();
        rootDelete.remove(title);
        db.setRoot(rootDelete);
case R.id.contextdelete:
int pos=信息位置;
String title=results.get(info.position).getTitle();
结果:移除(pos);
adapter.notifyDataSetChanged();
索引rootDelete=(索引)db
.getRoot();
rootDelete.remove(标题);
db.setRoot(rootDelete);

然而,它给出了一些类似于“关键不唯一”的东西。

现在才明白。我和我的朋友正在做这个。我们试着把

  case R.id.contextdelete:
        int pos = info.position;
        String title = results.get(info.position).getTitle();
        results.remove(pos);
        adapter.notifyDataSetChanged();

        Index<Lab9_082588FetchDetails> rootDelete = (Index<Lab9_082588FetchDetails>) db
                .getRoot();
        rootDelete.remove(title, results.get(info.position));
        db.setRoot(rootDelete);

        return true;
case R.id.contextdelete:
int pos=信息位置;
String title=results.get(info.position).getTitle();
结果:移除(pos);
adapter.notifyDataSetChanged();
索引rootDelete=(索引)db
.getRoot();
rootDelete.remove(title,results.get(info.position));
db.setRoot(rootDelete);
返回true;
使用.remove函数,该函数具有对象的参数和自定义获取数据类(在本例中为Lab9_082588FetchDetails)。事实证明,代码中的initial.remove函数只删除键,而不删除对象(在本例中为内容)本身


是一个非常有用的网站,它展示了各种各样的Perst功能,这些功能对此类应用程序非常有用。

现在才知道。我和我的朋友正在做这个。我们试着把

  case R.id.contextdelete:
        int pos = info.position;
        String title = results.get(info.position).getTitle();
        results.remove(pos);
        adapter.notifyDataSetChanged();

        Index<Lab9_082588FetchDetails> rootDelete = (Index<Lab9_082588FetchDetails>) db
                .getRoot();
        rootDelete.remove(title, results.get(info.position));
        db.setRoot(rootDelete);

        return true;
case R.id.contextdelete:
int pos=信息位置;
String title=results.get(info.position).getTitle();
结果:移除(pos);
adapter.notifyDataSetChanged();
索引rootDelete=(索引)db
.getRoot();
rootDelete.remove(title,results.get(info.position));
db.setRoot(rootDelete);
返回true;
使用.remove函数,该函数具有对象的参数和自定义获取数据类(在本例中为Lab9_082588FetchDetails)。事实证明,代码中的initial.remove函数只删除键,而不删除对象(在本例中为内容)本身

是一个有用的网站,展示了各种Perst功能,可用于此类应用程序

case R.id.contextdelete:
        int pos = info.position;
        String title = results.get(info.position).getTitle();
        results.remove(pos);
        adapter.notifyDataSetChanged();
        Index<Lab8_082588FetchDetails> rootDelete =   (Index<Lab8_082588FetchDetails>) db
                .getRoot();
        rootDelete.remove(title);
        db.setRoot(rootDelete);
  case R.id.contextdelete:
        int pos = info.position;
        String title = results.get(info.position).getTitle();
        results.remove(pos);
        adapter.notifyDataSetChanged();

        Index<Lab9_082588FetchDetails> rootDelete = (Index<Lab9_082588FetchDetails>) db
                .getRoot();
        rootDelete.remove(title, results.get(info.position));
        db.setRoot(rootDelete);

        return true;