0

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 にブレークポイントを設定した後、コールバックが呼び出されません。

4

1 に答える 1

0

目的が単に通知を受け取ることである場合は、OnClickListener代わりに を使用しOnItemClickListenerます。nullのときにsetOnClickListenerinを介してリスナーを設定します。それ以外の場合は、 で取得する追加情報が必要な場合は、特殊化されたクラスで定義した便利なメンバーを設定および取得するように特殊化できます。 getViewconvertViewonItemClickImageView

于 2013-08-30T05:44:55.397 に答える