Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在数据库中存储listview显示位置_Android_Database_Sqlite_Listview - Fatal编程技术网

Android 在数据库中存储listview显示位置

Android 在数据库中存储listview显示位置,android,database,sqlite,listview,Android,Database,Sqlite,Listview,我创建了一个android列表视图,允许用户重新排列每个项目在其中的位置。但是,我不知道如何以最佳和最有效的方式将“已更改”的位置存储在数据库中,以便通过使用按显示id排序功能从数据库中检索光标 有人能帮我解决这个问题吗?谢谢 更新: 目前,我考虑的是在数据库中存储项目位置,作为创建后的最后一个项目位置,然后在更改后,我将更改数据库中所选项目的位置,并运行一个循环以更改其下的每一个其他项目,增量为1 这个逻辑有意义吗?您可以在数据库中创建一个名为ordinal type integer的列,以存

我创建了一个android列表视图,允许用户重新排列每个项目在其中的位置。但是,我不知道如何以最佳和最有效的方式将“已更改”的位置存储在数据库中,以便通过使用按显示id排序功能从数据库中检索光标

有人能帮我解决这个问题吗?谢谢

更新:

目前,我考虑的是在数据库中存储项目位置,作为创建后的最后一个项目位置,然后在更改后,我将更改数据库中所选项目的位置,并运行一个循环以更改其下的每一个其他项目,增量为1


这个逻辑有意义吗?

您可以在数据库中创建一个名为ordinal type integer的列,以存储项目在列表中的显示顺序。当用户重新排列列表时,相应地更改序号

编辑:


在阅读了你的更新之后,我认为这不会起作用,因为如果用户改变了你更新的东西下面的东西的位置怎么办

为什么不根据每个项目在ListView中的位置来更新它们的位置呢

因此,您的数据库方法之一是:

public boolean updateOrdinal(int itemId, int ordinal)

{

    ContentValues c = new ContentValues();


    c.put("ordinal", ordinal);


    return db.update("TableName", c, kID + "=" + itemId, null) > 0;

}

这将在用户保存列表后调用。当然,循环必须为每个项调用此函数

谢谢你的回复。我确实有一列指示它的位置。我已经更新了我的问题,也许你可以看看。我还没有太多的数据库移动代码。我仍在考虑适当的方法。但我确实有一个听众会向我提供位置信息。在阅读了你的更新后,我认为这不起作用,因为如果用户更改了低于你更新的位置的位置会怎么样当用户更改下面某个项目的位置时,下面的项目是否会是新选择的项目并再次运行循环?因为我在想,如果需要运行这么多数据库调用来更新每个项目的位置,以及是否有更好的方法来解决问题,沿着java.util.arraylist样式,我可以轻松地移动项的位置。然后您将处理两个版本的数据,一个在DB中,另一个在arraylist中。总的来说,以今天的手机速度,这应该不会太糟糕,除非你谈论的是成千上万或数十万个项目的清单。然后你可以把它放在自己的线程中。但我怀疑任何用户都不会想要订购超过50-100个项目的列表:。