package org.techbooster.sample.bookmarkloader;
import android.support.v4.app.LoaderManager;
import android.os.Bundle;
import android.provider.Browser;
import android.database.Cursor;
import android.support.v4.app.FragmentActivity;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
public class MainActivity extends FragmentActivity
implements LoaderManager.LoaderCallbacks<Cursor> {
private SimpleCursorAdapter mAdapter = null;
// ブックマークで読み込む項目
private static final String[] BOOKMARK_PROJECTION = new String[] {
Browser.BookmarkColumns._ID,
Browser.BookmarkColumns.TITLE,
Browser.BookmarkColumns.URL
};
// ブックマークで表示する項目
private static final String[] ADAPTER_FROM = new String[] {
Browser.BookmarkColumns.TITLE,
Browser.BookmarkColumns.URL
};
// UIでバインディングする項目
private static final int[] ADAPTER_TO = new int[] {
android.R.id.text1,
android.R.id.text2
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SimpleCursorAdapterのインスタンス生成
mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, // 2行表示のレイアウト指定
null, // Cursorは空で設定
ADAPTER_FROM, // ブックマークの項目設定
ADAPTER_TO, // UIでバインドする
0);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(mAdapter);
// Loaderの初期化
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_addBookmark:
// ブックマークの追加
Browser.saveBookmark(this, "TechBooster", "http://techbooster.org/");
return true;
}
return super.onOptionsItemSelected(item);
};
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// ブックマークをContentProviderから読み込むCursorLoaderの生成
return new CursorLoader(this,
Browser.BOOKMARKS_URI,
BOOKMARK_PROJECTION,
null,
null,
Browser.BookmarkColumns.CREATED + " desc");
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// ブックマークの読み込んだデータをAdapterに設定
mAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> data) {
// Adapterの中身を空に設定
mAdapter.swapCursor(null);
}
}