title: convertView is being passed as null even if the view exists
body: <p>I have developed an android application where image and text are displayed in a grid view and when the user scrolls down next ten items(image and text) are displayed. The problem arises when the getView method of adapter is called after adapter.notifyDataSetChanged() call. The adapter recycles the data but positions are rearranged and repeated in grid view. I hadn't faced this problem till I added the condition to check if convertView is null. </p>
  
  <p>Activity class : </p>
  
  <pre><code>public class DynamicListViewActivity extends Activity implements
      OnScrollListener {
  
  int visibleElements;
  int scrollState;
  int count;
  TextAdapter adapter = new TextAdapter();
  int total=200;// total items limit in grid view
  
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      setContentView(R.layout.grid);
      count=10;
      GridView grid = (GridView) findViewById(R.id.gridview);
      grid.setAdapter(adapter);
      grid.setOnScrollListener(this);
  
  }
  
  public void onScroll(AbsListView view, int firstVisible, int visibleCount,
          int totalCount) {
      visibleElements= visibleCount;
  }
  
  public void onScrollStateChanged(AbsListView v, int s) {
      Log.d("ScrollState", s+"");
      scrollState=s;
      isScrollStateComplete();
  }
  
  public void isScrollStateComplete(){
  if(visibleElements&gt;0 &amp;&amp; scrollState==SCROLL_STATE_IDLE &amp;&amp; total&gt;count){
          int diff=total-count;
          count+=(diff&gt;=10)?10:diff;//update count to next ten items
          adapter.notifyDataSetChanged();
      }
  }
  
  
  class TextAdapter extends BaseAdapter {
      public int getCount() {
          return count;
      }
  
      public Object getItem(int pos) {
          return pos;
      }
  
      public long getItemId(int pos) {
          return pos;
      }
  
      public View getView(int pos, View convertView, ViewGroup p) {
  
          View v = convertView;
          System.out.println("pos : "+pos+" boolean "+(v==null));// log to check position and convertView
                    if(v==null){
              v =((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.textlayout,null);
  
              ImageView iv = (ImageView) v.findViewById(R.id.album_thumbnail);
              iv.setImageDrawable(getResources().getDrawable(R.drawable.icon));
  
              TextView tvAlbumName = (TextView)v.findViewById(R.id.album_name);
              tvAlbumName.setText("postion "+pos);
  
              TextView tvAlbumDesc = (TextView)v.findViewById(R.id.album_description);
              tvAlbumDesc.setText("");
  
             }
  
            return v;
      }
  }
  }
  </code></pre>
  
  <p>Before scrolling grid view displays properly. Log :</p>
  
  <pre><code>08-05 14:24:34.440: INFO/ActivityManager(58): Starting activity: Intent {  act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.mis.list.demo/.DynamicListViewActivity }
  08-05 14:24:34.642: INFO/System.out(685): pos : 0 boolean true
  08-05 14:24:34.710: INFO/System.out(685): pos : 0 boolean false
  08-05 14:24:34.710: INFO/System.out(685): pos : 1 boolean true
  08-05 14:24:34.730: INFO/System.out(685): pos : 2 boolean true
  08-05 14:24:34.800: INFO/System.out(685): pos : 3 boolean true
  08-05 14:24:34.860: INFO/System.out(685): pos : 4 boolean true
  08-05 14:24:34.880: INFO/System.out(685): pos : 5 boolean true
  08-05 14:24:34.910: INFO/System.out(685): pos : 6 boolean true
  08-05 14:24:34.920: INFO/System.out(685): pos : 7 boolean true
  08-05 14:24:34.960: INFO/System.out(685): pos : 0 boolean true
  08-05 14:24:35.030: INFO/ActivityManager(58): Displayed activity com.mis.list.demo/.DynamicListViewActivity: 520 ms (total 520 ms)
  </code></pre>
  
  <p>After first end of scroll</p>
  
  <pre><code>08-05 14:26:15.740: DEBUG/ScrollState(685): 1
  08-05 14:26:15.830: DEBUG/dalvikvm(685): GC_EXTERNAL_ALLOC freed 3624 objects / 257464 bytes in 71ms
  08-05 14:26:16.210: INFO/System.out(685): pos : 8 boolean false
  08-05 14:26:16.210: INFO/System.out(685): pos : 9 boolean true
  08-05 14:26:16.250: DEBUG/ScrollState(685): 0
  08-05 14:26:16.260: INFO/System.out(685): pos : 0 boolean true
  08-05 14:26:16.271: INFO/System.out(685): pos : 0 boolean false
  08-05 14:26:16.271: INFO/System.out(685): pos : 1 boolean false
  08-05 14:26:16.271: INFO/System.out(685): pos : 2 boolean false
  08-05 14:26:16.271: INFO/System.out(685): pos : 3 boolean false
  08-05 14:26:16.271: INFO/System.out(685): pos : 4 boolean false
  08-05 14:26:16.271: INFO/System.out(685): pos : 5 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 6 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 7 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 8 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 9 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 10 boolean false
  08-05 14:26:16.280: INFO/System.out(685): pos : 11 boolean true
  08-05 14:26:16.371: DEBUG/dalvikvm(685): GC_EXTERNAL_ALLOC freed 644 objects / 33224 bytes in 41ms
  08-05 14:26:45.270: WARN/KeyCharacterMap(685): No keyboard for id 0
  08-05 14:26:45.270: WARN/KeyCharacterMap(685): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
  08-05 14:26:45.341: INFO/System.out(685): pos : 12 boolean true
  08-05 14:26:45.351: INFO/System.out(685): pos : 13 boolean true
  08-05 14:26:45.371: INFO/System.out(685): pos : 14 boolean true
  08-05 14:26:45.380: INFO/System.out(685): pos : 15 boolean true
  08-05 14:26:45.450: INFO/System.out(685): pos : 16 boolean false
  08-05 14:26:45.450: INFO/System.out(685): pos : 17 boolean false
  08-05 14:26:45.460: INFO/System.out(685): pos : 18 boolean false
  08-05 14:26:45.460: INFO/System.out(685): pos : 19 boolean false
  </code></pre>
  
  <p>But the grid displays with repeated values and not in the order it should.
  Sorry i am not allowed to post images as i am new user.</p>
  
  <p>In the log i see that for position 0 convertView==null is true.</p>
  
  <p>how to set this right as i plan to download images in the place of android icon for image view currently used.</p>
  
  <p>Please help.</p>