Android - 当ViewView在ViewPager中时,未调用GridView onItemClick回调

时间:2013-08-28 22:55:06

标签: android gridview

我有一个ViewPager,它包含一个GridView。这是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添加固有可点击的视图(例如Buttons)时遇到过类似的问题。但我只使用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中添加调试日志记录并设置断点后,永远不会调用回调。

1 个答案:

答案 0 :(得分:0)

如果目标只是获取通知,请使用OnClickListener代替OnItemClickListener。当setOnClickListener为空时,通过getView中的convertView设置监听器。否则,如果您需要在onItemClick中获得的额外信息,则可以专门设置ImageView来设置和检索您在专用类中定义的便利成员。