Tips‎ > ‎Tips‎ > ‎

ListView を使う(1)



文字列を画面上にリスト表示する方法

  1. プロジェクトを作成する
  2. レイアウトを作成する
  3. 画面に表示する文字列リストを作成する
  4. アダプタを作成する
  5. アダプタをリストビューに設定する
  6. アプリを実行する

ソースコードは下記に配置しました。

SVN でダウンロードするのは下記です


YouTube 動画


main.xml

 




なんで main.xml っていうファイル名なの?



新規 Android プロジェクトを作成したとき
create activity にチェックを入れると
自動的に作成されます。

ファイル名は main.xml である必要はありません。
自由に変更してもかまいません。

変更したときはビルドエラーが出るので、該当箇所を変更したファイル名に修正しましょう。
 



/res/layout/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/ListView"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    />
</LinearLayout>

修正したの上記太字部分です。 
  1. TextView を ListView に変更
  2. android:id="@+id/ListView" を追加
  3. android:layout_height="fill_parent" に変更
  4. android:text を削除

MainActivity.java


 




なんで MainActivity.java っていうファイル名なの?



新規 Android プロジェクトを作成したとき
create activity にチェックを入れて
「MainActivity」 と入力したからです。

レイアウトファイル「main.xml」というのが自動で作成されることが分かっているので、Activity と layout の関係が分かりやすいように MainActivity という名前にしました。

「(レイアウトファイル名)+Activity」 と命名するようにしています。


 
MainActivity.java
package jp.caldroid.matsudroid.sample.listview;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
    
// ListView
private ListView mListView = null;
/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // ListView を取得
        mListView = (ListView) findViewById(R.id.ListView);
        
        // リスト用データ作成
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, createList());
        
        // リストにデータを設定
        mListView.setAdapter(adapter);
        
        
    }

    /*
     * リスト作成
     */
    private List<String> createList() {
    
     ArrayList<String> list = new ArrayList<String>();
    
     list.add("文字列1");
     list.add("あかさたな");
     list.add("こんにちわ");
     list.add("明日");
     list.add("横浜");
     list.add("渋谷");
     list.add("文字列2");
     list.add("最後の文字列");
    
    
    
     return list;
    }
}



リストビューに直接データを追加することはできません。
アダプタを作成して、データはアダプタに追加していきます。
なぜ、アダプタを作成するのか・・・・
リストビューの1行に表示するものを細かく制御するために、アダプタを継承したクラスを作ります。

今回のサンプルでは文字列だけを表示させるのでアダプタを継承せずにそのまま使いました。
1行に表示するビューは android.R.layout.simple_list_item_1 というレイアウトを使用しています。

ListView のカスタマイズは後日・・・・

Comments