Androidリストビューの例
Androidでは、http://developer.android.com/reference/android/widget/ListView.html[ListView]を使用すると、コンポーネントを垂直スクロール可能リストに配置できます。
このチュートリアルでは、2つの `ListView`の例を示します:
-
`ListView`でコンポーネントを表示する通常の方法です.
-
`ListView`の項目表示をカスタマイズするためのカスタム配列アダプタです.
P.SこのプロジェクトはEclipse 3.7で開発され、Android 2.3.3.
でテストされています
1.通常のListViewの例
この例では、 `ListView`を介して果物の名前のリストを表示する方法を示します。簡単で自明でなければなりません。
1.1 Androidレイアウトfile
ファイル:res/layout/list__fruit.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout__width="fill__parent"
android:layout__height="fill__parent"
android:padding="10dp"
android:textSize="20sp" >
</TextView>
1.2 ListView
package com.mkyong.android;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
public class ListFruitActivity extends ListActivity {
static final String[]FRUITS = new String[]{ "Apple", "Avocado", "Banana",
"Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
"Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//no more this
//setContentView(R.layout.list__fruit);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list__fruit,FRUITS));
ListView listView = getListView();
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(),
((TextView) view).getText(), Toast.LENGTH__SHORT).show();
}
});
}
}
1.3デモ

2.カスタムArrayAdapterの例
この例では、
ListView`で4つのアイテムを作成する方法を示し、カスタムの
`ArrayAdapter`”を使用して、リスト内の “アイテム名”に異なるイメージベースを表示します。
2.1 Images
デモのために4枚の画像を取得します。

、width = 480、height = 312]
2.2 Androidレイアウトfile
ファイル:res/layout/list__mobile.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout__width="wrap__content"
android:layout__height="wrap__content"
android:padding="5dp" >
<ImageView
android:id="@+id/logo"
android:layout__width="50px"
android:layout__height="50px"
android:layout__marginLeft="5px"
android:layout__marginRight="20px"
android:layout__marginTop="5px"
android:src="@drawable/windowsmobile__logo" >
</ImageView>
<TextView
android:id="@+id/label"
android:layout__width="wrap__content"
android:layout__height="wrap__content"
android:text="@+id/label"
android:textSize="30px" >
</TextView>
</LinearLayout>
2.3カスタムArrayAdapter
クラスを作成して
ArrayAdapter`を拡張し、
getView() `メソッドで項目表示をカスタマイズします。
package com.mkyong.android.adaptor;
import com.mkyong.android.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MobileArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[]values;
public MobileArrayAdapter(Context context, String[]values) {
super(context, R.layout.list__mobile, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT__INFLATER__SERVICE);
View rowView = inflater.inflate(R.layout.list__mobile, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.logo);
textView.setText(values[position]);
//Change icon based on name
String s = values[position];
System.out.println(s);
if (s.equals("WindowsMobile")) {
imageView.setImageResource(R.drawable.windowsmobile__logo);
} else if (s.equals("iOS")) {
imageView.setImageResource(R.drawable.ios__logo);
} else if (s.equals("Blackberry")) {
imageView.setImageResource(R.drawable.blackberry__logo);
} else {
imageView.setImageResource(R.drawable.android__logo);
}
return rowView;
}
}
2.4 ListView
+
ListView
、ただし上記のカスタムアダプタを使用してリストを表示します。
package com.mkyong.android;
import com.mkyong.android.adaptor.MobileArrayAdapter;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.Toast;
import android.view.View;
public class ListMobileActivity extends ListActivity {
static final String[]MOBILE__OS =
new String[]{ "Android", "iOS", "WindowsMobile", "Blackberry"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new MobileArrayAdapter(this, MOBILE__OS));
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
//get selected items
String selectedValue = (String) getListAdapter().getItem(position);
Toast.makeText(this, selectedValue, Toast.LENGTH__SHORT).show();
}
}
2.5デモ

ソースコードをダウンロードする
両方の例をダウンロード –
Android-ListView-Example.zip
(21 KB)
参考文献
リストビューの例]。
http://developer.android.com/reference/android/widget/ListView.html
[Android
ListView JavaDoc]
リンク://タグ/アンドロイド/[アンドロイド]リンク://タグ/リストビュー/[リストビュー]