概要:アイテム (ここでは顧客) のリストを表示するアクティビティを備えた簡単なアプリケーション (デモ/プロトタイプ) があります。項目は、アプリケーションの SQLite データベースから取得されます。私はとのContentProvider
アプローチを使用しています。ユーザーによるメニュー項目の選択を、選択したリストの並べ替え方法に変換する必要があります。それを行う通常の方法は何ですか?そのユーザー選択を将来のためにどのように保存する必要がありますか? (私はAndroidプログラミングに関して初心者です。)LoaderManager
SimpleCursorAdapter
詳細:私のアクティビティonCreate
メソッドでは、fillData
メソッド (チュートリアルから学んだ以下のコードを参照) が呼び出されて、リストにデータが入力されます。を呼び出すと、インスタンスを返すgetLoaderManager().initLoader(0, null, this);
が呼び出されます。カーソル ローダーはコンテンツ プロバイダーを使用し、並べ替えを定義する引数も渡します。これまでのところ、リストのソートには固定引数を使用しています。私の推測では、メニュー項目のクリックを処理するときに を呼び出す必要があります。別のローダーと別のアダプターを作成する必要があります。しかし、どのように情報をに渡す必要がありますか?onCreateLoader
CursorLoader
fillData();
onCreateLoader
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.insert_customer: // this already works for me
createCustomer();
return true;
case R.id.customers_orderby_name_asc:
??? // What should be here?
fillData(); // I should probably call this.
return true:
case R.id.customers_orderby_name_desc:
???
fillData();
return true:
}
return super.onOptionsItemSelected(item);
}
...
private void fillData() {
String[] from = new String[] { CustomerTable.COLUMN_CODE,
CustomerTable.COLUMN_NAME,
CustomerTable.COLUMN_TOWN,
CustomerTable.COLUMN_STREET};
int[] to = new int[] { R.id.code, R.id.name, R.id.town, R.id.street };
getLoaderManager().initLoader(0, null, this);
adapter = new SimpleCursorAdapter(this,
R.layout.customer_row, null, from, to, 0);
setListAdapter(adapter);
}
// After initLoader()...
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String[] projection = { CustomerTable.COLUMN_ID,
CustomerTable.COLUMN_CODE,
CustomerTable.COLUMN_NAME,
CustomerTable.COLUMN_STREET,
CustomerTable.COLUMN_TOWN };
CursorLoader cursorLoader = new CursorLoader(this,
DemoContentProvider.CUSTOMERS_CONTENT_URI, projection, null, null,
CustomerTable.COLUMN_NAME); // here fixed order by the column
return cursorLoader;
}