Pap*_*000 7 sqlite android android-listview android-cursorloader android-cursoradapter
我的应用程序的设置方式是我有一个由CursorLoader维护的ListView,由用户发布的帖子.每个帖子都有与之关联的用户评论.每个listitem底部都有一个自定义文本视图,可以滚动注释(使用向右或向左滑动).在每个自定义文本视图中,是与其特定帖子关联的注释列表.它类似于Google+应用中的评论,但项目是可滚动的.注释存储在与帖子不同的数据库表中.
我遇到的问题是,每次调用BindView时,我都在查询数据库并检索带有相关注释的游标并将其添加到自定义textview列表中.查询每个项目的注释数据库表似乎效率很低.所以我想知道是否有理想的方法来处理这个问题.我的代码看起来像:
public void bindView(View view, Context context, Cursor cursor)
final String rowid = cursor.getString(cursor.getColumnIndexOrThrow(Database.ROWID));
Cursor commentcursor = c.getContentResolver().query(DatabaseProvider.CONTENT_URI_COMMENTTABLE, freeWriteCommentColumns, Database.PARENTPOSTROWID + " =?", new String[]{rowid}, null);
commentcursor.moveToFirst();
while (commentcursor.isAfterLast() == false){
//get comment
//add to comment text view list
}
Run Code Online (Sandbox Code Playgroud)
我已经研究过CursorJoiners,但这似乎并没有用.我玩过JOINS,但这会使行数大于它需要的数量.我正在玩一个注册表游标的持有者,该游标是在创建适配器时创建的并设置为全局变量.这似乎是一个不错的途径,因为我不必每次都重新查询.我只是不确定如何处理这种情况.
我知道你尝试过,但这是要走的路。我遇到了几乎同样的问题,甚至是一个更大的问题,因为我的问题是使用 JOIN,然后使用 MergeCursor。但让我们回到你的问题:bindView()在 UI 上被调用,而你在 UI 线程上进行数据库调用,这是不好的做法,而且最重要的是你在游标上运行。我会加入帖子的查询并在加载的 SQL 级别连接评论,然后我只使用一个游标来查看帖子和评论,一切都会好得多。
如何在SQL级别连接字符串?所有评论都在一起吗?好吧,我将查看并编辑我的答案。
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |