title: BaseAdapter postion changed when call notifyDataSetChanged
body: <p>i have a BaseAdapter like this . let's say , i just have four rows . </p>
  
  <p>i will call setId for this four convertView with the posttion .
  and i will call notifyDataSetChanged() somewhere (i define a button at top ,click the button will call notifyDataSetChanged), when  notifyDataSetChanged called , the four rows will be called by getView() . at the getView() , i will print the id(old position) and the new position . as the rows have no change , i think the position will not change . they will be the same . but the turth is not that . </p>
  
  <p>the print :</p>
  
  <pre><code>D/BasePhotoFragment(19230): position:0
  D/BasePhotoFragment(19230): old id :3
  D/BasePhotoFragment(19230): new id :0
  D/BasePhotoFragment(19230): position:1
  D/BasePhotoFragment(19230): old id :2
  D/BasePhotoFragment(19230): new id :1
  D/BasePhotoFragment(19230): position:2
  D/BasePhotoFragment(19230): old id :1
  D/BasePhotoFragment(19230): new id :2
  D/BasePhotoFragment(19230): position:3
  D/BasePhotoFragment(19230): old id :0
  D/BasePhotoFragment(19230): new id :3
  </code></pre>
  
  <p>could anyone told me why ? thanks , bellow is the adapter code . </p>
  
  <pre><code>public class PhotosGridAdapter extends BaseAdapter{
  
  private LayoutInflater mInflater;
  private Context mContext ;
  private List&lt;PhotoEntity&gt; listEntity ;
  private int mLinePhotos;
  private LinearLayout.LayoutParams mphotoParams = new android.widget.LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
  
  private final class ViewHolder{
      public List&lt;ImageView&gt; imgs;
  }
  
  public PhotosGridAdapter(Context ctx,List&lt;PhotoEntity&gt; entities) {
      this.mContext = ctx ;
      mInflater = LayoutInflater.from(ctx);
      mLinePhotos = Utils.getPhotosNumOfLine(ctx);
      listEntity = entities;
  }
  
  @Override
  public int getCount() {
      return listEntity != null ? listEntity.size() / mLinePhotos  : 0;
  }
  
  @Override
  public Object getItem(int position) {
      if( position &lt; listEntity.size() )
      return listEntity.get(position);
      else
      return null;
  }
  
  @Override
  public long getItemId(int position) {
      return position;
  }
  
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
      Log.d(TAG,"position:"+position);
      ViewHolder holder = null;
  
      if (convertView == null) {
      holder = new ViewHolder();
      convertView = mInflater.inflate(R.layout.row_grid_photos_container, null);
              ....
      convertView.setTag(holder);
      }else{
      holder = (ViewHolder)convertView.getTag();
      }
  
  
     int old_id = convertView.getId();
  
     Log.d(TAG,"old id :"+old_id);
     Log.d(TAG,"new id :"+position);
  
     if(old_id == position)
         return convertView;
  
         convertView.setId(position);
  
         ..... do some bind .
     return convertView;
  }
  </code></pre>
  
  <p>}</p>