title: Android - Gridview with Custom BaseAdapter, create onclicklistener
body: <p>I have created a gridview which displays the letters of the alphabet. I populate the gridview with a string array using a custom BaseAdapter. </p>
  
  <p>What i want to do is to be able to get the value (letter) of the clicked cell. In order to verify that it works, i have created a TextView and i want when the user clicks on an item (cell) to set the text of the TextView with the value of the selected cell</p>
  
  <p><img src="https://i.stack.imgur.com/Y1lsC.png" alt="enter image description here">  </p>
  
  <p>I have made an attempt which doesn't work. Here is my code:</p>
  
  <p><strong>activity_main.xml</strong></p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:id="@+id/container"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity"
      tools:ignore="MergeRootFrame" &gt;
  
      &lt;GridView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:id="@+id/myGridView"
          android:layout_alignParentTop="true"
          android:layout_alignParentLeft="true"
          android:numColumns="7" /&gt;
  
      &lt;TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textAppearance="?android:attr/textAppearanceLarge"
          android:text="Large Text"
          android:id="@+id/feedback"
          android:layout_alignParentBottom="true"
          android:layout_centerHorizontal="true" /&gt;
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p><strong>cell.xml</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"&gt;
  
      &lt;Button
          android:id="@+id/grid_item"
          android:layout_gravity="center"
          android:textAppearance="?android:attr/textAppearanceMedium"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="05"
          android:textSize="20sp"
          android:enabled="true"
          android:clickable="true"&gt;
      &lt;/Button&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p><strong>MainActivity</strong></p>
  
  <pre><code>public class MainActivity extends Activity {
  
      private TextView text;
      private GridView gridView;
      private final String[] items = new String[]{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
              "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          text = (TextView) findViewById(R.id.feedback);
  
          gridView = (GridView) this.findViewById(R.id.myGridView);
          CustomGridAdapter gridAdapter = new CustomGridAdapter(MainActivity.this, items);
          gridView.setAdapter(gridAdapter);
          gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
                  text.setText((String) (gridView.getItemAtPosition(position)));
                  Log.i("ITEM_CLICKED", "" + (String) (gridView.getItemAtPosition(position)));
              }
          });
  
      }
  }
  </code></pre>
  
  <p><strong>CustomGridAdapter</strong></p>
  
  <pre><code>public class CustomGridAdapter extends BaseAdapter {
  
      private Context context;
      private String[] items;
      LayoutInflater inflater;
  
      public CustomGridAdapter(Context context, String[] items) {
          this.context = context;
          this.items = items;
          inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      }
  
      public View getView(int position, View convertView, ViewGroup parent) {
  
          if (convertView == null) {
              convertView = inflater.inflate(R.layout.cell, null);
          }
          Button button = (Button) convertView.findViewById(R.id.grid_item);
          button.setText(items[position]);
  
          return convertView;
      }
  
      @Override
      public int getCount() {
          return items.length;
      }
  
      @Override
      public Object getItem(int position) {
          return items[position];
      }
  
      @Override
      public long getItemId(int position) {
          return position;
      }
  }
  </code></pre>
  
  <p>What am i doing wrong?</p>
  
  <p><strong>Edit</strong>: It seems that the gridView.setOnItemClickListener(...); is not called/executed. I have changed it to this in order to check it and i see nothing in the logcat.</p>
  
  <pre><code>gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
                  Log.i("ON_ITEM_CLICK_LISTENER", "item clicked");
              }
          });
  </code></pre>