0

Sqlite データベースでデータが更新されるたびに ListFragment を更新する方法。次の Fragment コードが正常に動作する場合、このリスト フラグメントを更新する方法は?

public class MyMasterFragment extends SherlockListFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /*
        Runnable mRunnable=new Runnable() {
               public void run() {
                     Log.i("mylog", "refreshing...");
                     ListAdapter myListAdapter = getMyListAdapter();
                     setListAdapter(myListAdapter);
                     Log.i("mylog", "list Updated");
                     mHandler.postDelayed( this, 60*1000 );
                   }
        };

        mHandler.postDelayed( mRunnable, 0);
        */

        ListAdapter myListAdapter = getMyListAdapter();
        setListAdapter(myListAdapter);

    }

    private ListAdapter getMyListAdapter() {
        DBHelper dbHelper=new DBHelper(getActivity().getApplicationContext());
        SQLiteDatabase myDB = dbHelper.getWritableDatabase();


        ListAdapter adapter = null ;
            String TIME_SORT_ORDER=DBConstants.TIME+" DESC";
            String[] mycolumns={DBConstants.SNO,DBConstants.MYSYMBOL,DBConstants.VALUE1,DBConstants.DATE,DBConstants.TIME,DBConstants.VALUE2,DBConstants.VALUE3,DBConstants.VALUE4,DBConstants.VALUE5,DBConstants.VALUE6};
            Cursor c1 = myDB.query(DBConstants.LATEST_MY_DATA_TABLE,mycolumns, null, null, null, null, TIME_SORT_ORDER);

            if(c1.getCount()>0)
            {
                adapter=new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.live_list_item, c1, new String[] {DBConstants.MYSYMBOL,DBConstants.VALUE1,DBConstants.VALUE2,DBConstants.DATE,DBConstants.TIME}, new int[] {R.id.mysymbol, R.id.value1,R.id.value2,R.id.ldate,R.id.ltime});
            }
        myDB.close();
        dbHelper.close();
        return adapter;
    }
}

また、Android のドキュメントで Loader Manager について学習しました。

  1. ローダーマネージャーを使用すると、DB でデータが更新されるたびにフラグメントリストが自動的に更新されますか?
  2. サポート ライブラリを使用して Pre-honeycomb versionz でローダー マネージャーを使用できますか?
4

1 に答える 1

1

ローダーマネージャーを使用すると、DB でデータが更新されるたびにフラグメントリストが自動的に更新されますか?

いいえ、ロードを再実行するには、内部イベントまたは外部ブロードキャストをリッスンする必要があります。

  • サービス: サービスとバインドすると、インターフェイス IBinder を共有して通信します。それを使用して、サービスは DB を更新したことを Activity に通知できます。

サポート ライブラリを使用して Pre-honeycomb versionz でローダー マネージャーを使用できますか?

はい、できます。

于 2012-11-27T10:20:33.327 に答える