OnItemClickListener Not Triggered on Android GridView

Olgun Kaya picture Olgun Kaya · Nov 18, 2011 · Viewed 25.8k times · Source

I have a Gridview filled by an Adapter which returns LinearLayouts each contains an ImageButton and TextView.

In the adapter I am binding an onClick and onLongClick event to the ImageButton.

I am trying to bind OnItemClickListener to the gridview but I don't know why that the onItemclicked never fired up.

It's my 6th hour without anything.

By the way; OnItemSelectListener working perfectly on the Grid.

I am checking if some piece of code accidentally handles the onItemClicked but couldn't catch yet.

I need help guys.

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();
    }
}

Answer

Olgun Kaya picture Olgun Kaya · Nov 21, 2011

Do not use clickable objects in the grid. In that case Android cannot handle the click event of GridView.

Instead, use something to show a similar user interface view. Then handle that object's click actions.

Don't: put Button in the GridView to perform some click actions.

Do: put an ImageView instead of ImageButton and handle ImageView's click events.