我有一个由适配器填充的Gridview,它返回LinearLayouts,每个都包含一个ImageButton和TextView。
在适配器中,我将onClick和onLongClick事件绑定到ImageButton。
我正在尝试将OnItemClickListener绑定到网格视图,但是我不知道为什么onItemclicked从来没有启动。
这是我第六个小时没吃任何东西了。
顺便说一句,OnItemSelectListener在网格上工作得很好。
我正在检查是否有一些代码意外地处理了onItemClicked,但仍然无法捕获。
我需要帮手。
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();
}
}发布于 2014-01-22 19:28:35
嘿伙计们终于找到解决方案了..。
我们所做的是直接访问GridView中的布局,所以onItemClickListener发现访问项目很混乱。
因此,解决方案是在适配器内应用onClickListener (即通常为ArrayAdapter)
所以我想说的是:
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;
}https://stackoverflow.com/questions/8183609
复制相似问题