2012年12月17日月曜日

アンドロイドでシンプルなリストメニューを作成

ブログを始めてまだ1週間も経っていないのでフィードバックなどがいただけると嬉しいです。

私が使っている開発環境は jdk 1.7.0 、android 4.2 、 eclipse 4.2.1

今回はAndroid platformが用意したデフォルトの行レイアウトを使い、シンプルなリストメニューを作成しましょう。もちろん自作のレイアウトを使い、作成することも可能なんです。使い方としては以下の図のようにメニューリストの内容をクリックするとトーストが選択した内容を表示する。


1. listView layout 作成

まず、次のソースコードのように作成する。

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

</LinearLayout>

new android application project で新しいプロジェクトを立ち上がり、そして上記のソースコードに書き換えます。

メニューリストの作成スペースを作るために、ListViewレイアウトを加えなければなりません。

これでコンパイルしてみると、画面には何も表示しません。それはListViewレイアウトにデータをまだ書き込んでいません。レイアウトにデータを書き込むため、まずそのレイアウトにidを加えないといけません。例の場合はListViewレイアウトにtext1というidを加えました。

次は、このidを利用し、データを書き込みます。

2. MainActivityクラスを作成

新しいJavaクラスを立ち上げて、それをMainActivityと名づけます。そして、次のコードを入力します。

public class MainActivity extends ListActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 
  String[] values = new String[] { "Android", "iPhone", "WindowsMobile"};
  // First parameter - Context
  // Second parameter - Layout for the row
  // Third parameter - ID of the TextView to which the data is written
  // Forth - the Array of data
  
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, android.R.id.text1, values);  
  // Assign adapter to ListView
  setListAdapter(adapter);  
 } 
}

ここで注意してもらいたいことは二つあります。一つ目は通常、extends Activity クラスとなっていますが、ここはListActivity クラスに書き換えることです。二目はListActivityクラスの場合はsetContextViewのかわりにsetListAdapterを使うことです。

これでコンパイルしてみると、String配列に代入した"Android","iPhone","WindowsMobile"がメニューに表示しました。

android.R.layout.simple_list_item_1がデフォルトの行レイアウトです。android.R.id.text1はデフォルト行レイアウトに入ってるデフォルトidです。もちろん、自作の行レイアウトを使用することも可能です。

次はメニューをクリックとトーストが表示するプログラムを作成します。

3. onListItemClickメソッドを実装

MainActivityクラスにonListItemClickメソッドを実装し、次のソースコードを入力します。

@Override
public void onListItemClick(ListView l,View v,int position,long id){
 String item = (String)getListAdapter().getItem(position);
 Toast.makeText(getApplicationContext(),
        item+"", Toast.LENGTH_SHORT)
        .show();
  
}
String itemにgetListAdapter.getItem()メソッドより選択したメニューの名前を代入します。そして、代入したitemをトーストより表示します。

4. 完成!!!

これでチュートリアルは終了です。ビルドすると最初に話したようなプログラムが動くはずです。そして、見ていただいてありがとうございました。

次のソースコードは完成したMainActivityクラスです。

import android.os.Bundle; 
import android.app.ListActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
 
  String[] values = new String[] { "Android", "iPhone", "WindowsMobile"};
  // First parameter - Context
  // Second parameter - Layout for the row
  // Third parameter - ID of the TextView to which the data is written
  // Forth - the Array of data
  
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, android.R.id.text1, values);  
  // Assign adapter to ListView
  setListAdapter(adapter);  
 }
 
 @Override
 public void onListItemClick(ListView l,View v,int position,long id){
  String item = (String)getListAdapter().getItem(position);
  Toast.makeText(getApplicationContext(),
         item+"", Toast.LENGTH_SHORT)
         .show();
  
 }
}






0 件のコメント:

コメントを投稿