Blog -
以前、自作ArrayAdapterをListViewにセットして
onListItemClickが発生しない場合の方法を投稿していたがそれでも発生しない場合
(ListActivityで無い場合など)
の対策方法として
ArrayAdapter側のgetViewでView自体にOnClickListenerを設定すると
Activity側のsetOnItemClickListenerが呼ばれる様になる方法を紹介します。
Activity側
onCreateなどで
mListView = (ListView) findViewById(R.id.list); list = new ArrayList(); list = dataSet(this); //<-データをセットする adapter = new CustomAdapter(this, R.layout.item, list); mListView .setAdapter(adapter); registerForContextMenu(mListView ); //アイテムクリック mListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView arg0, View arg1,int position, long arg3) { Toast.makeText(getBaseContext(), list.get(position).getPointLocation(), Toast.LENGTH_SHORT).show(); return; } });
ArrayAdapterのgetViewで
public View getView(final int position, View convertView, final ViewGroup parent) { view = inflater.inflate(R.layout.list_item, parent, false); view.setOnClickListener(new OnClickListener(){ public void onClick(View v){ ((ListView) parent).performItemClick(v, position, (long)0); } }); }
とすると発生する様になります。