Update上的动态SQLite ListView使所有项目变灰

时间:2011-07-11 09:58:45

标签: android

我的活动经历了正常程序。

        databaseHelper = new AppDatabaseHelper(this ); //openOrCreateDatabase(Constants.NAME, 1, null);
        database = databaseHelper.getWritableDatabase();

        // select columns[] from table order by sentdate desc
        cursor = database.query(AppDatabaseHelper.MAIL_TABLE, columns, null, null, null, null, AppDatabaseHelper.C_MAIL_SENTDATE + " DESC");

        // Does the displaying work //
        cursorAdapter = new SimpleCursorAdapter(this, R.layout.mail_element, cursor, columns, columnsMap);
        lv.setAdapter( cursorAdapter );

我的问题是当列表被刷新时,数据集观察者不会触发,并且从计时器执行此代码以确保它正常工作会导致列表视图中的所有元素变为灰色,或者50%不可见。

               Log.d(Constants.TAG, "MailActivity > List changed!");
               CursorAdapter.notifyDataSetChanged();

               cursor = database.query(AppDatabaseHelper.MAIL_TABLE, columns, null, null, null, null, AppDatabaseHelper.C_MAIL_SENTDATE + " DESC");;
               cursorAdapter = new SimpleCursorAdapter(context, R.layout.mail_element, cursor, columns, columnsMap);

               lv.setAdapter( cursorAdapter );

有没有人知道为什么这些元素在更新列表时会变灰?当我退出活动并重新打开它时,它再次显示正常。

1 个答案:

答案 0 :(得分:1)

解决了,我不得不改变光标,而不是重新做适配器!

Log.d(Constants.TAG, "MailActivity > List changed!");
cursorAdapter.notifyDataSetChanged();

cursor = database.query(AppDatabaseHelper.MAIL_TABLE, columns, null, null, null, null, AppDatabaseHelper.C_MAIL_SENTDATE + " DESC");;
cursorAdapter.changeCursor( cursor );

lv.setAdapter( cursorAdapter );