ダイアログにListView表示

# AlertDialog内にListviewを表示してみる

AlertDialogには、setView(View view)メソッドがあります。
これを使用して、Dialog内にListViewを表示してみます。
もちろん自作で作成したListViewをsetView(View view)に渡す事も可能です。

```java
public class MainActivity2 extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main2);

		ArrayList<Item> itemList = new ArrayList<Item>();
		for(int i=0;i<=1000;i++){
			Item item = new Item();
			item.setIntItem(i);
			item.setStringItem(i+"");
			itemList.add(item);
		}
		
		CustomAdapter adapter = new CustomAdapter(getApplicationContext(), 0, itemList);
		ListView listView = new ListView(this);
		listView.setAdapter(adapter);
		
		AlertDialog dialog = new AlertDialog.Builder(this)
		.setTitle("選択してくだい。")
		.setView(listView).create();
		dialog.show();
	}

	// ListViewで使用するItemClass
	public class Item{
		private int intItem;
		private String stringItem;

		public void setStringItem(String stringItem){
			this.stringItem = stringItem;
		}
		public String getStringItem(){
			return this.stringItem;
		}
		public void setIntItem(int intItem){
			this.intItem = intItem;
		}
		public int getIntItem(){
			return this.intItem;
		}
	}

	// ListViewで使用するadapter
	public class CustomAdapter extends ArrayAdapter<Item>{
		private LayoutInflater inflater;

		public CustomAdapter(Context context, int resource, List<Item> objects) {
			super(context, resource, objects);
			inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		}
		@Override
		public View getView(int position, View v, ViewGroup parent) {
			Item item = (Item)getItem(position);
			if (null == v) v = inflater.inflate(R.layout.custom_listview, null);

			TextView intTextView = (TextView)v.findViewById(R.id.int_item);
			intTextView.setText(item.getIntItem()+"");

			TextView stringTextView = (TextView)v.findViewById(R.id.string_item);
			stringTextView.setText(item.getStringItem());
			return v;
		}
	}
}
```

```xml:custom_listview
<?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:gravity="center"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/int_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp" >
    </TextView>

    <TextView
        android:id="@+id/string_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp" >
    </TextView>

</LinearLayout>
```

以上全文です。
ポイントはここだけです。

```java
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("選択してくだい。")
.setView(listView).create();
dialog.show();
```

作成したListViewをsetViewで渡します。こうするとこのAlertDailog内にListViewが表示されます。

```java
listView.setOnClickListener(new OnClickListener() {
	@Override
	public void onClick(View v) {}
});
```
でリスナーを登録するこもと可能です。
スクリーンショットです。

![Screenshot_2014-06-07-17-24-47.png](https://qiita-image-store.s3.amazonaws.com/0/30138/b215cfa2-5aba-d266-86c2-ffc3e2432975.png)