【问题标题】:Add the contents of one Cursor to another Cursor将一个光标的内容添加到另一个光标
【发布时间】:2022-01-06 12:30:28
【问题描述】:

我想加入两个游标,以便加入后第二个游标的内容也出现在第一个游标中。

这正是我的代码,

public final Uri AllImage_URI_Int = MediaStore.Images.Media.INTERNAL_CONTENT_URI;
public final Uri AllAudio_URI = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
cContentList = managedQuery(AllImage_URI_Int, null, null, null, MediaStore.Images.ImageColumns.TITLE);
cList_Int = managedQuery(AllImage_URI, null, null, null, MediaStore.Images.ImageColumns.TITLE);

在这种情况下我应该使用CursorJoiner 吗?

我想将此光标传递给 SimpleListAdapter?我怎样才能加入这两个游标?

【问题讨论】:

    标签: android android-cursor


    【解决方案1】:

    也许您可以使用MergeCursor wrapper 将两个游标合并为一个新游标,并将其传递给您的适配器。

    【讨论】:

      【解决方案2】:

      好吧,我自己解决了这个问题,并通过 AbstractCursor 扩展,代码如下,

      private final int ROWCACHESIZE = 64;
      private int mRowNumCache[] = new int[ROWCACHESIZE];
      private int mCursorCache[] = new int[ROWCACHESIZE];
      private int mCurRowNumCache[][];
      private int mLastCacheHit = -1;
      
      public SortCursor(Cursor[] cursors, String sortcolumn)
      {
          mCursors = cursors;
      
          int length = mCursors.length;
          mSortColumns = new int[length];
          for (int i = 0 ; i < length ; i++) {
              if (mCursors[i] == null) continue;
      
              mCursors[i].moveToFirst();
      
              // We don't catch the exception
              mSortColumns[i] = mCursors[i].getColumnIndexOrThrow(sortcolumn);
          }
          mCursor = null;
          String smallest = "";
          for (int j = 0 ; j < length; j++) {
              if (mCursors[j] == null || mCursors[j].isAfterLast())
                  continue;
              String current = mCursors[j].getString(mSortColumns[j]);
              if (mCursor == null || current.compareToIgnoreCase(smallest) < 0) {
                  smallest = current;
                  mCursor = mCursors[j];
              }
          }
      
          for (int i = mRowNumCache.length - 1; i >= 0; i--) {
              mRowNumCache[i] = -2;
          }
          mCurRowNumCache = new int[ROWCACHESIZE][length];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-24
        • 1970-01-01
        • 2022-01-24
        • 2010-10-02
        • 1970-01-01
        • 2014-05-09
        相关资源
        最近更新 更多