Android でカスタムしたアイテムを表示する ListView 用の ArrayAdapter さわったときのメモ。

ListView は任意の View をよんでそれをアイテムとして表示できる。自作の layout を View にする場合はもちろんわたされるデータもデータをわたされる View もちがうので、データの受けわたしをするメソッドもふくめて調整しなくてはならない。

	public View getView(final int position, View item_view, ViewGroup parent) {
		final PaperQListDat item_dat = this.getItem(position);
		if (item_dat == null) {
			return null;
		}
	<span class="synStatement">if</span> (item_view == <span class="synConstant">null</span>) {
		item_view = inflater.inflate(R.layout.paper_q_list, <span class="synConstant">null</span>);
	}

	TextView tv_q = (TextView) item_view.findViewById(R.id.textViewQ);
	TextView tv_a = (TextView) item_view.findViewById(R.id.textViewA);
	tv_q.setText(item_dat.getQ());
	tv_a.setText(item_dat.getA());

	<span class="synStatement">return</span> item_view;
}

で、そのメソッドの引数にアイテム用の View があるんだけど、これは前もって設定できるとかではなくて、 すでに作成されたアイテム用の View の再利用につかわれる。なので inflater での layout からの View 取得は省略できません。