AndroidTips | LIstActivityを作る2通りの方法

この記事は2014年2月25日に書かれたものです。内容が古い可能性がありますのでご注意ください。


LIstActivityを作る2通りの方法

さてさて今までさらっと使用してきたListView。
実は以下の2通りの方法で記述ができます。

  • Activityクラスを継承し作成する
  • ListActivityクラスを継承し作成する

実行図

1

2

共通項目

配列はjava内に記述するわけではなく、ローカライズを意識してstrings.xml内に記述します。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">ListView</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>

    <string-array name="coj_p">
        <item>Gold</item>
        <item>Silver</item>
        <item>Bronze</item>
    </string-array>

</resources>

Activityクラスを継承し、LIstViewを作成する例

こちらの方法は画面レイアウトファイルにListViewを定義し、それをjava側で利用する方法です。

  • MainActivity.java
  • package com.example.listview;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements OnItemClickListener {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		String[] OCJ_P = getResources().getStringArray(R.array.coj_p);
    
    		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1, android.R.id.text1, OCJ_P);
    
    		ListView listView = (ListView) findViewById(R.id.listView1);
    		listView.setAdapter(adapter);
    		listView.setOnItemClickListener(this);
    	}
    
    	@Override
    	public void onItemClick(AdapterView<?> parent, View view, int position,
    			long id) {
    		Toast.makeText(MainActivity.this,
    				parent.getAdapter().getItem(position) + "を選択しました。",
    				Toast.LENGTH_SHORT).show();
    	}
    
    }
    
  • activity_main.xml
  • <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="15dp"
        tools:context=".MainActivity" >
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>
    
    </LinearLayout>
    

ListActivityクラスを継承し、LIstViewを作成する例

こちらの方法はjava側でListViewを生成する方法です。
生成のタイミングは、setListAdapter()が呼ばれたところです。

  • MainActivity.java
  • package com.example.listview;
    
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.Toast;
    
    public class MainActivity extends ListActivity implements OnItemClickListener {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		String[] OCJ_P = getResources().getStringArray(R.array.coj_p);
    
    		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    				android.R.layout.simple_list_item_1, android.R.id.text1, OCJ_P);
    		setListAdapter(adapter);
    		getListView().setOnItemClickListener(this);
    	}
    
    	@Override
    	public void onItemClick(AdapterView<?> parent, View view, int position,
    			long id) {
    		Toast.makeText(MainActivity.this,
    				parent.getAdapter().getItem(position) + "を選択しました。",
    				Toast.LENGTH_SHORT).show();
    	}
    
    }
    

これでOKです。
用途に併せて使い分けてください。

  • このエントリーをはてなブックマークに追加

PAGE TOP