Androidでは、http://developer.android.com/reference/android/widget/ListView.html[ListView]を使用すると、コンポーネントを垂直スクロール可能リストに配置できます。

このチュートリアルでは、2つの `ListView`の例を示します:

  1. `ListView`でコンポーネントを表示する通常の方法です.

  2. `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デモ


アンドロイドリストビューの例、title = "android-listview-demo1"、width = 318、height = 480

2.カスタムArrayAdapterの例

この例では、

ListView`で4つのアイテムを作成する方法を示し、カスタムの

`ArrayAdapter`”を使用して、リスト内の “アイテム名”に異なるイメージベースを表示します。


2.1 Images

デモのために4枚の画像を取得します。


android-listadapter-demo1-images

、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デモ


アンドロイドカスタムアレイアダプターの例、title = "android-listadapter-demo1"、width = 318、height = 480

ソースコードをダウンロードする

両方の例をダウンロード –

Android-ListView-Example.zip

(21 KB)

参考文献

ListView JavaDoc]

リンク://タグ/アンドロイド/[アンドロイド]リンク://タグ/リストビュー/[リストビュー]