end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

リストビュー(ListView)入門(写経)

クリックしたリストの内容をテキストボックスに表示します

res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
	<!--選択されたitemの内容を表示  -->
    <TextView android:id="@+id/selecteditem"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

src/ListViewActivity.java

package jp.end0tknr.listview;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.AdapterView;
import android.widget.TextView;

public class ListViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 「simple_list_item_1」は、予め用意されているListViewのレイアウトの一つ.
        // 他のレイアウトの名称は次のurlに一覧がありますが、表示例がないので、いまいち
        // http://developer.android.com/reference/android/R.layout.html
        ArrayAdapter<Dish> adapter =
        	new ArrayAdapter<Dish>(this,
        							android.R.layout.simple_list_item_1);
        adapter.add(new Dish("焼きそば", 480));
        adapter.add(new Dish("カツ丼", 540));
        adapter.add(new Dish("カレーうどん", 460));
        adapter.add(new Dish("オムライス", 520));
        
        final ListView listview = (ListView) findViewById(R.id.listview);
        
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(
        		new AdapterView.OnItemClickListener() {
        			// http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html
        			//@Override
        			public void onItemClick(
        					AdapterView<?> parent, //eventを発生させたListView
        					View view,
        					int position,
        					long id) {
        				setSelectedItem(parent, position);
        			}
        		});
    }

    private void setSelectedItem(AdapterView<?> parent, int position) {
    	Dish dish = (Dish) parent.getAdapter().getItem(position);
    	final TextView selecteditem =
    	(TextView) findViewById(R.id.selecteditem);
    	selecteditem.setText(
    	"オーダー= " + dish.getName() + "\n" +
    	"金額= " + dish.getPrice() + "円");
    }
}

class Dish{
	String name;
	int price;
	Dish(String aname,int aprice){
		name = aname;
		price = aprice;
	}
	
	public String toString(){
		return name + "("+ price +"円)";
	}
	
	public String getName(){
		return name;
	}
	
	public int getPrice(){
		return price;
	}
}