2011-07-11 4 views
1

私は通常の手順を実行するアクティビティを持っています。動的SQLite ListView onUpdateはすべての項目をグレーアウトします

 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); 

私の問題は、リストが更新取得するときに、データセットの観察者が発生しませんし、それを確実にするために、タイマーから、このコードを実行すると、グレー表示になることを原因にリストビュー内のすべての要素を作業、または50ish%見えません。

   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

解決済み、アダプタを再接続する代わりに、カーソルを変更する必要がありました。

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); 
関連する問題