| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==Android スケルトン ListActivity== [Android][Android スケルトン] *ListActivity を利用するスケルトン *メニューとコンテキストメニュー…」
==Android スケルトン ListActivity==
[Android][Android スケルトン]
*ListActivity を利用するスケルトン
*メニューとコンテキストメニューを利用

===イメージ===
====メニュー====
[[File:0116_list_activity01.jpg]]
====コンテキストメニュー====
[[File:0117_list_activity02.jpg]]

===Tips===
====背景色の設定をしても、スクロールすると黒くなってしまう。====
*[http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:scrollingCache ListView#scrollingChache]を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<String> items = new ArrayList<String>();
// 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<String> {
private List<String> items;

public NoteAdapter(Context context, int textViewResourceId, List<String> 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===

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/android:list"
android:layout_height="wrap_content"
android:layout_width="fill_parent">

</ListView>
<TextView android:text="@string/msg_no_items"
android:id="@+id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp">
</TextView>
</LinearLayout>

===row_note.xml===

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:text=""
android:id="@+id/txt_note_title"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="24sp"
>
</TextView>
</LinearLayout>

===string.xml===

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, NoteListActivity!</string>
<string name="app_name">Handrawroid</string>
<string name="mnu_edit_new">新規作成</string>
<string name="msg_no_items">アイテムがありません</string>
<string name="mnu_preferences">設定</string>
<string name="mnu_close">終了</string>
<string name="mnu_edit">編集</string>
<string name="mnu_share">共有</string>
<string name="mnu_delete">削除</string>
</resources>

案内メニュー