首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓GridView未触发OnItemClickListener

安卓GridView未触发OnItemClickListener
EN

Stack Overflow用户
提问于 2011-11-18 22:00:27
回答 6查看 26.5K关注 0票数 31

我有一个由适配器填充的Gridview,它返回LinearLayouts,每个都包含一个ImageButton和TextView。

在适配器中,我将onClick和onLongClick事件绑定到ImageButton。

我正在尝试将OnItemClickListener绑定到网格视图,但是我不知道为什么onItemclicked从来没有启动。

这是我第六个小时没吃任何东西了。

顺便说一句,OnItemSelectListener在网格上工作得很好。

我正在检查是否有一些代码意外地处理了onItemClicked,但仍然无法捕获。

我需要帮手。

代码语言:javascript
运行
复制
gridView = (GridView) layoutInflater.inflate(R.layout.gridview, null);
gridView.setOnItemClickListener(new ItemClickListener());
. 
.
.

//inner handler class
class ItemClickListener implements AdapterView.OnItemClickListener {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(mainActivity.getApplicationContext(),view + " clicked at pos " +            
        i,Toast.LENGTH_SHORT).show();
    }
}
EN

Stack Overflow用户

发布于 2014-01-22 19:28:35

嘿伙计们终于找到解决方案了..。

我们所做的是直接访问GridView中的布局,所以onItemClickListener发现访问项目很混乱。

因此,解决方案是在适配器内应用onClickListener (即通常为ArrayAdapter)

所以我想说的是:

代码语言:javascript
运行
复制
public View getView(int position, View convertView, ViewGroup parent) {

            //Here row is a view and we can set OnClickListener on this
    final View row;
    ViewHolder holder = null;

    if (convertView == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        //Here we inflate the layout to view (linear in my case)
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ViewHolder();
        holder.imageTitle = (TextView) row.findViewById(R.id.text);
        holder.image = (ImageView) row.findViewById(R.id.image);
        row.setTag(holder);
    } else {
        row = convertView;
        holder = (ViewHolder) row.getTag();
    }

    ImageItem item = data.get(position);
    holder.imageTitle.setText(item.getTitle());
    holder.image.setImageBitmap(item.getImage());

    //Now get the id or whatever needed
    row.setId(position);
    // Now set the onClickListener
    row.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast.makeText(context, "Clicked" + row.getId() + "!!",
                    Toast.LENGTH_SHORT).show();
        }
    });
    return row;
}
票数 2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8183609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档