Союз таблиц с курсором в Android - PullRequest
2 голосов
/ 16 октября 2010

Я пытаюсь объединить две таблицы с одинаковыми полями, чтобы создать один курсор (через поставщика контента), который я использую для создания моего ListView.

@Override
 public Cursor query(Uri uri, String[] projection, String selection,
   String[] selectionArgs, String sortOrder) {

  SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
  String groupBy = null;

  switch (sUriMatcher.match(uri)) {

  case LIST:
   StringBuilder sb = new StringBuilder();

   for (String s : projection)
    sb.append(s).append(",");

   String projectionStr = sb.toString();
   projectionStr = projectionStr.substring(0,
     projectionStr.length() - 1);

   String[] subQueries = new String[] {
     "SELECT " + projectionStr + " FROM " + Customer.TABLE_NAME,
     "SELECT " + projectionStr + " FROM "
       + IndividualCustomer.TABLE_NAME };
   String sql = qb.buildUnionQuery(subQueries, sortOrder, null);
   SQLiteDatabase db = mDatabaseHelper.getReadableDatabase();
   Cursor mCursor = db.rawQuery(sql, null);

   mCursor.setNotificationUri(getContext().getContentResolver(), uri);

   return mCursor;

Даже если две таблицы пусты, я получаю две нулевые строки, что создает две строки в моем списке просмотра. Как мне избавиться от этой проблемы?

Кроме того, когда я удаляю строку из ListView, курсор не обновляется, несмотря на setNotificationUri ()

Любые указатели, будут наиболее ценится

1 Ответ

1 голос
/ 31 октября 2010

Решено - я должен был предоставить предложение group by, так как один из столбцов (проекции) имел функцию "TOTAL (...)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...