Program: 39424
Project: 39424
Buggy source:
@Override public View getView(final int position,View convertView,ViewGroup parent){
  ViewHolder holder=null;
  if (convertView == null) {
    holder=new ViewHolder();
    convertView=mInflater.inflate(R.layout.item_record_type,null);
    holder.title=(TextView)convertView.findViewById(R.id.record_title);
    holder.icon=(ImageView)convertView.findViewById(R.id.record_icon);
    holder.deleteIcon=(ImageView)convertView.findViewById(R.id.delete);
    holder.addNewRecordView=convertView.findViewById(R.id.add_new_record);
    convertView.setTag(holder);
  }
 else {
    holder=(ViewHolder)convertView.getTag();
  }
  if (position == 0)   cleatAnim();
  if (position == mHidePosition) {
    convertView.setVisibility(View.INVISIBLE);
  }
 else {
    convertView.setVisibility(View.VISIBLE);
  }
  if (position == recordTypes.size() - 1) {
    if (convertView.getTag(R.string.app_name) == null)     convertView.setTag(R.string.app_name,"String_Node_Str");
    holder.addNewRecordView.setVisibility(View.VISIBLE);
    holder.icon.setVisibility(View.GONE);
    holder.title.setText("String_Node_Str");
    holder.icon.setImageResource(R.drawable.ic_add_white);
    AnimatorSet mAnimatorSet=new AnimatorSet();
    ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",0);
    objectAnimator.setDuration(0);
    mAnimatorSet.playTogether(objectAnimator);
    mAnimatorSet.start();
    holder.deleteIcon.setVisibility(View.GONE);
  }
 else {
    holder.addNewRecordView.setVisibility(View.GONE);
    holder.icon.setVisibility(View.VISIBLE);
    convertView.setTag(R.string.app_name,null);
    final RecordType recordType=recordTypes.get(position);
    holder.title.setText(recordType.getRecordDesc());
    holder.icon.setImageResource(IconTypeUtil.getTypeIcon(recordType.getRecordIcon()));
    if (mShake) {
      AnimatorSet mAnimatorSet=new AnimatorSet();
      ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",3,0,-3);
      objectAnimator.setRepeatMode(Animation.REVERSE);
      objectAnimator.setRepeatCount(Integer.MAX_VALUE);
      objectAnimator.setDuration(150);
      mAnimatorSet.playTogether(objectAnimator);
      mAnimatorSet.start();
      animatorSets.add(mAnimatorSet);
      holder.deleteIcon.setVisibility(View.VISIBLE);
    }
 else {
      AnimatorSet mAnimatorSet=new AnimatorSet();
      ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",0);
      objectAnimator.setDuration(0);
      mAnimatorSet.playTogether(objectAnimator);
      mAnimatorSet.start();
      holder.deleteIcon.setVisibility(View.GONE);
    }
    holder.deleteIcon.setOnClickListener(new View.OnClickListener(){
      @Override public void onClick(      View v){
        if (recordTypes.size() == 2) {
          SnackBarUtil.showSnackInfo(v,mContext,"String_Node_Str");
          return;
        }
        final MaterialDialog materialDialog=new MaterialDialog(mContext);
        materialDialog.setTitle("String_Node_Str").setMessage("String_Node_Str").setPositiveButton("String_Node_Str",new View.OnClickListener(){
          @Override public void onClick(          View v){
            recordTypes.remove(position);
            recordType.setIsDel(true);
            mDragGridView.animateReorder(position,recordTypes.size());
            notifyDataSetChanged();
            recordManager.updateRecordType(recordType,new Handler(){
              @Override public void handleMessage(              Message msg){
                super.handleMessage(msg);
              }
            }
);
          }
        }
).setNegativeButton("String_Node_Str",new View.OnClickListener(){
          @Override public void onClick(          View v){
            materialDialog.dismiss();
          }
        }
).show();
      }
    }
);
  }
  return convertView;
}

Fixed version (ground truth):
@Override public View getView(final int position,View convertView,ViewGroup parent){
  ViewHolder holder=null;
  if (convertView == null) {
    holder=new ViewHolder();
    convertView=mInflater.inflate(R.layout.item_record_type,null);
    holder.title=(TextView)convertView.findViewById(R.id.record_title);
    holder.icon=(ImageView)convertView.findViewById(R.id.record_icon);
    holder.deleteIcon=(ImageView)convertView.findViewById(R.id.delete);
    holder.addNewRecordView=convertView.findViewById(R.id.add_new_record);
    convertView.setTag(holder);
  }
 else {
    holder=(ViewHolder)convertView.getTag();
  }
  if (position == 0)   cleatAnim();
  if (position == mHidePosition) {
    convertView.setVisibility(View.INVISIBLE);
  }
 else {
    convertView.setVisibility(View.VISIBLE);
  }
  if (position == recordTypes.size() - 1) {
    if (convertView.getTag(R.string.app_name) == null)     convertView.setTag(R.string.app_name,"String_Node_Str");
    holder.addNewRecordView.setVisibility(View.VISIBLE);
    holder.icon.setVisibility(View.GONE);
    holder.title.setText("String_Node_Str");
    holder.icon.setImageResource(R.drawable.ic_add_white);
    AnimatorSet mAnimatorSet=new AnimatorSet();
    ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",0);
    objectAnimator.setDuration(0);
    mAnimatorSet.playTogether(objectAnimator);
    mAnimatorSet.start();
    holder.deleteIcon.setVisibility(View.GONE);
  }
 else {
    holder.addNewRecordView.setVisibility(View.GONE);
    holder.icon.setVisibility(View.VISIBLE);
    convertView.setTag(R.string.app_name,null);
    final RecordType recordType=recordTypes.get(position);
    holder.title.setText(recordType.getRecordDesc());
    holder.icon.setImageResource(IconTypeUtil.getTypeIcon(recordType.getRecordIcon()));
    if (mShake) {
      AnimatorSet mAnimatorSet=new AnimatorSet();
      ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",3,0,-3);
      objectAnimator.setRepeatMode(Animation.REVERSE);
      objectAnimator.setRepeatCount(Integer.MAX_VALUE);
      objectAnimator.setDuration(150);
      mAnimatorSet.playTogether(objectAnimator);
      mAnimatorSet.start();
      animatorSets.add(mAnimatorSet);
      holder.deleteIcon.setVisibility(View.VISIBLE);
    }
 else {
      AnimatorSet mAnimatorSet=new AnimatorSet();
      ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(convertView,"String_Node_Str",0);
      objectAnimator.setDuration(0);
      mAnimatorSet.playTogether(objectAnimator);
      mAnimatorSet.start();
      holder.deleteIcon.setVisibility(View.GONE);
    }
    holder.deleteIcon.setOnClickListener(new View.OnClickListener(){
      @Override public void onClick(      View v){
        if (recordTypes.size() == 2) {
          SnackBarUtil.showSnackInfo(v,mContext,"String_Node_Str");
          return;
        }
        final MaterialDialog materialDialog=new MaterialDialog(mContext);
        materialDialog.setTitle("String_Node_Str").setMessage("String_Node_Str").setPositiveButton("String_Node_Str",new View.OnClickListener(){
          @Override public void onClick(          View v){
            recordTypes.remove(position);
            recordType.setIsDel(true);
            mDragGridView.animateReorder(position,recordTypes.size());
            notifyDataSetChanged();
            materialDialog.dismiss();
            recordManager.updateRecordType(recordType,null);
          }
        }
).setNegativeButton("String_Node_Str",new View.OnClickListener(){
          @Override public void onClick(          View v){
            materialDialog.dismiss();
          }
        }
).show();
      }
    }
);
  }
  return convertView;
}