!!!Android スケルトン ListActivity [Android][Android スケルトン] *ListActivity を利用するスケルトン *メニューとコンテキストメニューを利用 !!イメージ !メニュー {{ref_image list_activity01.jpg}} !コンテキストメニュー {{ref_image list_activity02.jpg}} !!Tips !背景色の設定をしても、スクロールすると黒くなってしまう。 *[ListView#scrollingChache|http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:scrollingCache]をfalseに設定する。 android:scrollingCache="false" !!Activity package info.typea.handrawroid; import java.util.ArrayList; import java.util.List; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.TextView; /** * @author piroto */ public class NoteListActivity extends ListActivity { private static final int MENU_NEW = Menu.FIRST; private static final int MENU_CLOSE = Menu.FIRST + 1; private static final int MENU_PREFERENCES = Menu.FIRST + 2; private static final int MENU_EDIT = Menu.FIRST + 3; private static final int MENU_SHARE = Menu.FIRST + 4; private static final int MENU_DELETE = Menu.FIRST + 5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // コンテキストメニューを登録 registerForContextMenu(getListView()); List items = new ArrayList(); // Dummy Data Create From for (int i=0; i<10; i++) { items.add("dummy item " + i); } // Dummy Data Create To NoteAdapter adapter = new NoteListActivity.NoteAdapter(this, R.layout.row_note, items); setListAdapter(adapter); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0,MENU_NEW,0,R.string.mnu_edit_new) .setIcon(android.R.drawable.ic_menu_add); menu.add(0,MENU_PREFERENCES,0,R.string.mnu_preferences) .setIcon(android.R.drawable.ic_menu_preferences); menu.add(0,MENU_CLOSE,0,R.string.mnu_close) .setIcon(android.R.drawable.ic_menu_close_clear_cancel); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_NEW: break; case MENU_PREFERENCES: break; case MENU_CLOSE: break; default: break; } return true; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, MENU_EDIT, 0, R.string.mnu_edit); menu.add(0, MENU_SHARE, 0, R.string.mnu_share); menu.add(0, MENU_DELETE, 0, R.string.mnu_delete); } @Override public boolean onContextItemSelected(MenuItem item) { switch(item.getItemId()) { case MENU_EDIT: break; case MENU_SHARE: break; case MENU_DELETE: break; default: break; } return true; } /** * @author piroto */ public static class NoteAdapter extends ArrayAdapter { private List items; public NoteAdapter(Context context, int textViewResourceId, List items) { super(context, textViewResourceId, items); this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater lif = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = lif.inflate(R.layout.row_note, null); } String item = this.items.get(position); if (item != null) { TextView tv = (TextView)view.findViewById(R.id.txt_note_title); tv.setText(item); } return view; } } } !!main.xml !!row_note.xml !!string.xml Hello World, NoteListActivity! Handrawroid 新規作成 アイテムがありません 設定 終了 編集 共有 削除