package jp.mixi.sample.contentprovider.loader; import android.app.Activity; import android.content.ContentValues; import android.database.ContentObserver; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.CursorAdapter; import android.support.v4.widget.SimpleCursorAdapter; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ListView; /** * Loaderを使用しないでListViewを表示するサンプルです。 <br> * AdapterにはSimpleCursorAdapterを使用。 */ public class MainActivity extends Activity { private SimpleCursorAdapter mSimpleCursorAdapter; @SuppressWarnings("unused") private static final String TAG = MainActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.ListView); // UIにバインドするデータのカラム名 String[] from = { Book.COLUMN_NAME_BOOK_TITLE, Book.COLUMN_NAME_BOOK_PRICE }; // 指定したカラムのデータを表示するViewのIDを指定します。 int[] to = { R.id.Title, R.id.Price }; final Cursor cursor = getContentResolver().query(Book.CONTENT_URI, null, null, null, null); // Cursorのデータが更新されたことを通知する // BookContentProviderでsetNotificationUri()をしないと動作しない cursor.registerContentObserver(new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { cursor.requery(); } }); mSimpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.list_item_book, cursor, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); listView.setAdapter(mSimpleCursorAdapter); findViewById(R.id.ADD).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { insert(); } }); } private void insert() { ContentValues values = new ContentValues(); for (int i = 0; i < 3; i++) { values.clear(); values.put(Book.COLUMN_NAME_BOOK_TITLE, "TITLE" + i); values.put(Book.COLUMN_NAME_BOOK_PUBLISHER, "PUBLISHER" + i); values.put(Book.COLUMN_NAME_BOOK_PRICE, "PRICE" + i); getContentResolver().insert(Book.CONTENT_URI, values); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }