GridView を保持する ViewPager があります。これは PagerAdaper のinstantiateItem
メソッドです。
@Override
public Object instantiateItem(ViewGroup container, int position) {
View page = inflater.inflate(R.layout.emoticon_grid, null);
GridView grid = (GridView) page.findViewById(R.id.emoticon_grid);
grid.setAdapter(new EmoticonListAdapter(context, list, position));
container.addView(page);
grid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if(listener != null) {
Emoticon selectedEmoticon = (Emoticon) arg0.getAdapter().getItem(arg2);
listener.emoticonSelected(selectedEmoticon);
}
}
});
return page;
}
私が知る限り、本質的にクリック可能なビュー (ボタンなど) を GridViews に追加するときに、他の人が同様の問題に遭遇しました。しかし、私はImageViewのみを使用しています
public View getView(int position, View convertView, ViewGroup parent) {
Emoticon emoticon = emoticons[position];
if(convertView == null) {
convertView = new ImageView(context);
}
((ImageView) convertView).setImageResource(emoticon.ResourceId);
return convertView;
}
デバッグ ログを追加し、onItemClickMethod にブレークポイントを設定した後、コールバックが呼び出されません。