title: Adding a viewGroup to a ListView?
body: <p>Doing some R&amp;D for my company.  We are trying to have a listView that contains an imageview, and two edit boxes for each entry in the listview.</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="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:isScrollContainer="true"
    android:focusableInTouchMode="false"
    android:focusable="false"&gt;
    &lt;ImageView android:id="@+id/imgView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxWidth="100dp"
    android:maxHeight="100dp"/&gt;
    &lt;LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"&gt;
      &lt;EditText android:id="@+id/img_title"
      android:hint="Title"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:minWidth="150dp"/&gt;
      &lt;EditText android:id="@+id/img_desc"
      android:hint="Description"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:minWidth="150dp"/&gt;
    &lt;/LinearLayout&gt;
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>This is the layout file I am attempting to use for the item that will be within the listview.  Within the getView of our ImageAdapter (which extends ArrayAdapter),
  I am attempting to use the LayoutInflater to inflate the xml, which I then store into a ViewGroup.  I findViewByID() to get the imageView in the xml, and set the properties of the imageView that we would like.</p>
  
  <p>If we keep inflating this xml file, all the id's will be the same.  Here is our issues.</p>
  
  <ol>
  <li>If we remove a list item with a
  context menu, it actually removes
  the incorrect one.  Testing shows
  that it's mostly the last one added,
  but not always.</li>
  <li>The EditText's do not respond to keyboard input. On occasion, they're store some data, usually always "bbb".</li>
  </ol>
  
  <p>We have more issues, but we'll post back after we get these more serious errors fixed.</p>
  
  <pre><code>public View getView(int position, View convertView, ViewGroup parent)
      {
          final ImageView imageView;
          //InputStream is = null;
          final Context mContext = super.getContext();
          final AdapterItem item = super.getItem(position);
          final Uri imageUri = item.getUri();
          ViewGroup viewGroup = null;
  
          try
          {
              //-- If the view has not been created yet.
              if (convertView == null)
              {
                  /*
                   * Build the ImageView from the URI with some custom
                   * view settings.
                   */
  
                  viewGroup = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.mediauploadobject, null);
                  imageView = (ImageView) viewGroup.findViewById(R.id.imgView);
                  //imageView.setLayoutParams(new GridView.LayoutParams(IMAGE_WIDTH, IMAGE_HEIGHT));
                  imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                  imageView.setPadding(IMAGE_PADDING_LEFT, IMAGE_PADDING_TOP,
                          IMAGE_PADDING_RIGHT, IMAGE_PADDING_BOTTOM);
                  imageView.setDrawingCacheEnabled(true);
                  imageView.setClickable(true);
                  imageView.setFocusable(true);
                  imageView.setFocusableInTouchMode(true);
                  imageView.setSaveEnabled(false);
                  //the following two lines are required for the menu to popUp
                  imageView.setOnLongClickListener(new LongClickListener());
                  imageView.setOnCreateContextMenuListener(new LongClickMenu());
                  imageView.setOnClickListener(new ShortClickListener());
  
                  //the following two lines are required to put a boarder around the images
                  imageView.setOnTouchListener(new PictureOnTouchListener());
                  imageView.setOnFocusChangeListener(new PictureOnFocusChangeListener());
  
                  //-- Keep a reference to the ImageView by tagging it.
                  imageView.setTag(imageUri);
              }else
              {
                  //-- R-E-C-Y-C-L-E recycle!
                  viewGroup = (ViewGroup) convertView;
                  imageView = (ImageView) viewGroup.findViewById(R.id.imgView);
              }
  
              //-- Lazy load the images so the user doesn't have to wait for all of the querying non-sense
              //   that happens behind the scenes.
              imageView.setImageResource(android.R.drawable.gallery_thumb);
              imageView.post(new ImageLoader(imageUri, imageView));           
  
              //-- Be VERY careful when changing this code. Due to heap size issues,
              //   the size of the bitmap image MUST be modified with the
              //   provided BitmapFactory.Options or the program will
              //   crash often and frequent.
              //post
              //-- AJG 7/1/2010 added this assignment so we aren't always setting these preferences every
              //   iteration
              convertView = viewGroup;
          }catch(Throwable t)
          {
              Log.e(TAG, t.toString());
              return null;            
          }finally
          {
              //try{if(is != null)is.close();}catch(Exception squish){}
          }
  
          return viewGroup;
      }
  </code></pre>