@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_array_adapter_test); // xmlからおつまみ名の配列を取得 String[] item_name = this.getResources().getStringArray(R.array.tsumami); this.list = new ArrayList<Otsumami>(item_name.length); for (int i = 0; i < item_name.length; i++) { // おつまみクラスに格納 Otsumami otsumami = new Otsumami(); otsumami.setItem_name(item_name[i]); this.list.add(otsumami); } this.list_adapter = new ListAdapter(this, this.list); // 表示 ((ListView) findViewById(R.id.listView1)).setAdapter(this.list_adapter); }
// positionはfinalにしないと、onClick内で機能しない @Override public View getView(final int position, View convertView, ViewGroup parent) { final Otsumami otsumami = this.getItem(position); if (null == convertView) { // 行のレイアウトを取得(TextViewをImageButtonのレイアウト) convertView = this.mInflater.inflate(R.layout.list_item, null); } if (null != otsumami) { // おつまみ名と個数を表示 ((TextView) convertView.findViewById(R.id.textView1)) .setText(otsumami.getItem_name() + " (" + otsumami.getCount() + ")"); ((ImageButton) convertView.findViewById(R.id.imageButton1)) .setOnClickListener( new View.OnClickListener() { public void onClick(View v) { // リストの中身を変更する Otsumami add_otumami = list.get(position); add_otumami.addCount(); list.set(position, add_otumami); // 表示の更新のやり方1:リストビューに通知をかける list_adapter.notifyDataSetChanged(); // 表示の更新やり方2:ビューを直接いじる // View parent = (View) v.getParent(); // // ((TextView)(parent.findViewById(R.id.textView1))).setText(add_otumami.getItem_name() + " (" + add_otumami.getCount() + ")"); } }); } return convertView; }