package jp.mixi.assignment.listview.beg;
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends Activity {
private Activity mActivity;
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActivity = this;
// データの作成
ArrayList<Book> list = new ArrayList<Book>();
for (int i = 0; i < 20; i++) {
list.add(new Book("タイトル" + i, "出版社" + i, i * 10));
}
// TODO:BookArrayAdapterを作成して下さい。
// (リストアイテムのレイアウトは用意されているlist_item_book.xmlをしてください。)
// BookArrayAdapter bookArrayAdapter = new BookArrayAdapter(mActivity,
// list);
mListView = (ListView) findViewById(R.id.BookList);
// TODO:ListViewにBookArrayAdapterをセットしてください。
// TODO:ListViewをタップしたとき、BookActivityに遷移するようにしてください。遷移するときにBookクラスのtitleを渡してください。
// (BookActivityは用意されているものを使用してください)
}
@Override
protected void onResume() {
super.onResume();
registerForContextMenu(mListView);
}
@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;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, view, menuInfo);
// ContextMenuを設定
getMenuInflater().inflate(R.menu.context_menu_main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() != R.id.DeleteListItem && item.getItemId() != R.id.AddListItem) {
return false;
}
// MenuItemからContextMenuInfoを取得し、AdapterContextMenuInfoにキャストします
ContextMenuInfo menuInfo = item.getMenuInfo();
AdapterContextMenuInfo adapterInfo = (AdapterContextMenuInfo) menuInfo;
// AdapterContextMenuInfoから長押ししたリストアイテムのpositionを取得します
int position = adapterInfo.position;
// ListViewから長押しされたリストアイテムを取得します
Book book = (Book) mListView.getItemAtPosition(position);
// ListViewからセットされているAdapterを取得します
// BookArrayAdapter adapter = (BookArrayAdapter) mListView.getAdapter();
if (item.getItemId() == R.id.DeleteListItem) {
// TODO:Adapterを使用して長押ししたデータを削除してください
} else if (item.getItemId() == R.id.AddListItem) {
// TODO:Adapterを使用して長押ししたデータを追加してください
}
// TODO:Adapterを使用して表示されているデータを更新してください
return true;
}
@Override
protected void onPause() {
super.onPause();
unregisterForContextMenu(mListView);
}
}