首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对ListViewAdapter的MergeCursor进行排序或重新排序

如何对ListViewAdapter的MergeCursor进行排序或重新排序
EN

Stack Overflow用户
提问于 2016-06-28 19:24:28
回答 1查看 241关注 0票数 0

我正在为我的案例研究开发一个简单的社交媒体。我能够从用户关注的人那里检索到这篇文章。截图如下:

正如您所看到的,问题是帖子没有按照日期/id排序。相反,它是根据用户关注的人进行排序的。这是因为我只使用mergecursor合并游标。下面是我的代码的一部分:

代码语言:javascript
运行
复制
    ListView listviewFeed = (ListView) findViewById(R.id.listviewFeed);
    Cursor cursorFeed = DataAdapters.getFeed(dbHelper, strUserID);
    //This code is for retrieving user's own posts

    Cursor cursorFollowing = DataAdapters.getFollowing(dbHelper,strUserID);
    //This code is for retrieving the followed users.

    if(cursorFollowing.getCount()>0) {
        for (int intCtr = 0; intCtr < cursorFollowing.getCount(); intCtr++) {
            int intUseridI = cursorFollowing.getColumnIndex(Tables.FollowTable.COLUMN_USERID);
            String strUseridI = cursorFollowing.getString(intUseridI);

            Cursor cursorFollowingFeed = DataAdapters.getFeed(dbHelper, strUseridI);
            \\This code is for retrieving the posts of the people the user follows.

            if(intCtr>0)
            {
                mergeCursor = new MergeCursor(new Cursor[]{mergeCursor, cursorFollowingFeed});
            }else {
                mergeCursor = new MergeCursor(new Cursor[]{cursorFeed, cursorFollowingFeed});
            }
            //This code is for merging the cursors.

            if (intCtr + 1 == cursorFollowing.getCount()) {
                cursorFollowing.close();
            } else {
                cursorFollowing.moveToNext();
            }
        }
        ListViewAdapterMeasurement adapterMeasurement = new ListViewAdapterMeasurement(this, mergeCursor);
        listviewFeed.setAdapter(adapterMeasurement);
    }else
    {
        ListViewAdapterMeasurement adapterMeasurement = new ListViewAdapterMeasurement(this, cursorFeed);
        listviewFeed.setAdapter(adapterMeasurement);
    }

这一切都运行良好。我只想按日期或ID排序帖子。

有没有办法对MergeCursor进行排序?

EN

回答 1

Stack Overflow用户

发布于 2016-06-28 20:55:29

我想没有办法对MergeCursor进行排序,所以我试着考虑其他方法。

我像这样修改了我的查询:

代码语言:javascript
运行
复制
public static Cursor getFeed (DBHelper dbHelper, String strUserID)
{
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    Cursor cursorFollowing = getFollowing(dbHelper,strUserID);

    String strQuery = "SELECT * FROM feed_tbl WHERE "+ Tables.FeedTable.COLUMN_USERID + "="+strUserID;
    if(cursorFollowing.getCount()>0)
    {

        for(int intCtr=0;intCtr<cursorFollowing.getCount();intCtr++)
        {
            int intUseridI = cursorFollowing.getColumnIndex(Tables.FollowTable.COLUMN_USERID);
            String strUseridI = cursorFollowing.getString(intUseridI);
            String strConcatQuery = " OR "+ Tables.FeedTable.COLUMN_USERID + "="+strUseridI;

            if (intCtr + 1 == cursorFollowing.getCount()) {
                cursorFollowing.close();
            } else {
                cursorFollowing.moveToNext();
            }
            strQuery = strQuery +""+strConcatQuery;
            Log.v(TAG,strQuery);

        }
    }
    Cursor cursor = db.rawQuery(strQuery+" ORDER BY "+ Tables.FeedTable.COLUMN_ID + " DESC",null);
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}

日志标记上的结果如下:

V/FeedMe: SELECT * FROM feed_tbl WHERE feed_userid=1 OR feed_userid=2 OR feed_userid=4 OR feed_userid=5

只是为了让那些和我有同样问题的人明白这一点,那就是MergeCursor排序。没有这样的方法来排序MERGECURSOR :)

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38074914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档