title: Dynamic GridView items in Android
body: <p>Hey i'm trying to build an app in which the user can input some numbers and these numbers
  will be shown in a gridview with custom grid view items. If i use the common gridview items of android it works. But if i use my own layout it doesnt work. Only the first element in
  the array will be shown. Does anybody have a clou why this doesn't work?</p>
  
  <pre><code>public class GridViewAppActivity extends Activity {
  
  private ArrayList&lt;String&gt; items;
  private GridViewAdapter adapter;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      items = new ArrayList&lt;String&gt;();    
      adapter = new GridViewAdapter(this);
      GridView gridView = (GridView) findViewById(R.id.gridView);
      gridView.setAdapter(adapter);
  
      final Button addButton  = (Button) findViewById(R.id.add_button);
      final EditText itemEditText = (EditText) findViewById(R.id.number_field);
  
      // Click listener for Button
      addButton.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
               items.add(itemEditText.getText().toString());
               itemEditText.setText("");
               adapter.notifyDataSetChanged();
          }
      });
  }
  
  public class GridViewAdapter extends BaseAdapter {
  
      private Context mContext;
  
      public GridViewAdapter(Context c) {
          mContext = c;
      }
  
      public int getCount() {
          return items.size();
      }
  
      public Object getItem(int position) {
          return items.get(position);
      }
  
      public long getItemId(int position) {
          return position;
      }
  
      public View getView(int position, View convertView, ViewGroup parent) {
          View v;
          if(convertView==null){
              LayoutInflater li = getLayoutInflater();
              v = li.inflate(R.layout.grid_item, null);
              TextView tv = (TextView)v.findViewById(R.id.grid_item_text);
              tv.setText(items.get(position));
          } else {
              v = convertView;
          }
          return v;
      }
  
  }
  }
  </code></pre>