2014-01-20 2 views
0

격자보기에서 수평 진행 막대를 사용하지만 진행 막대의 위치를 ​​스크롤하면 다른보기로 바뀝니다.viewHolder 사용 후 격자보기 뒤섞기

이 문제를 해결하기 위해 뷰 홀더를 사용했지만 작동하지 않습니다.

왜 이런 일이 발생하는지 안내 할 수 있습니까?

public View getView(final int position, View convertView, ViewGroup parent) { 
     // ViewHolder holder = null; 

     if (convertView == null) { 
      viewHolder = new ViewHolderItem(); 

      LayoutInflater inflater = (LayoutInflater) context 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.gridviewcell, null); 

      viewHolder.downloadbutton = (ImageView) convertView 
        .findViewById(R.id.imgBtnbookdownload); 
      viewHolder.download_book_pro = (ProgressBar) convertView 
        .findViewById(R.id.progressBar_ingridcell); 

      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolderItem) convertView.getTag(); 
     } 

      Log.d("position",""+position); 
     tv_ot_edition_name = (TextView) convertView 
       .findViewById(R.id.ot_edition_name); 
     tv_ot_edition_name.setText(books.get(position).getOt_edition_name()); 

     tv_edition_description = (TextView) convertView 
       .findViewById(R.id.ot_edition_description); 

     Typeface face = Typeface.createFromAsset(context.getAssets(), 
       "HelveticaBold.ttf"); 
     tv_ot_edition_name.setTypeface(face); 
     tv_edition_description.setTypeface(face); 
     tv_edition_description.setText(books.get(position) 
       .getOt_edition_description()); 

     book_image = (ImageView) convertView.findViewById(R.id.imageView1); 

     final Download_book_content download = new Download_book_content(
       context, position, book_image, viewHolder.download_book_pro, 
       books, yourDir, imageLoader, string_testament, postion_ot, 
       viewHolder.downloadbutton); 

     viewHolder.downloadbutton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       check_netconnection check = new check_netconnection(context); 
       boolean status = check.findnet(); 
       if (status == true) { 

        download.startdownload(); 

       } else { 
        Toast.makeText(context, 
          "Please check your internet connection", 
          Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 

     // imageLoader.displayImage(books.get(position).getImage_url(), 
     // book_image, options); 
     imageLoader.displayImage(books.get(position).getImage_url(), 
       book_image, options, new ImageLoadingListener() { 
        @Override 
        public void onLoadingStarted(String imageUri, View view) { 

        } 

        @Override 
        public void onLoadingFailed(String imageUri, View view, 
          FailReason failReason) { 

        } 

        @Override 
        public void onLoadingComplete(String imageUri, View view, 
          Bitmap loadedImage) { 
         Animation anim = AnimationUtils.loadAnimation(context, 
           android.R.anim.fade_in); 
         anim.setDuration(1500); 
         book_image.setAnimation(anim); 
         anim.start(); 
        } 

        @Override 
        public void onLoadingCancelled(String imageUri, View view) { 

        } 
       }); 


     viewHolder.downloadbutton.setImageResource(books.get(position) 
       .getDownloadbtn_resid()); 


     return convertView; 
    } 

감사의 사전에 :

듣고 내 코드입니다.

+0

'Download_book_content'는 무엇을합니까? – Raghunandan

+0

Download_book_content는 파일을 다운로드하고 진행률 막대 진행률을 업데이트하기 위해 asynctask를 포함하는 도우미 클래스입니다. –

+0

전에 모든 데이터를 다운로드 한 다음 getView에서 데이터를 설정하십시오. 당신은 또한 당신의 모든 초기화를 옮길 것입니다. 부분적으로 textviews를 더보기 홀더 – Raghunandan

답변

0

이 두 가지 방법을 Gridview의 어댑터에서 재정 의하여 해결했습니다. 이 코드는 어댑터가 뷰를 결코 재생하지 못하도록 지시합니다. UI가 느려지고 응답 성이 떨어질 수 있습니다.

@Override 
public int getViewTypeCount(){ 
    return getCount(); 
} 

@Override 
public int getItemViewType(int position){ 
    return position; 
} 
+0

이 방법은 정확한 문제를 처리하는 방법이 아닙니다. 보기의 선택을 유지해야합니다 - [이 스레드 확인] (http://stackoverflow.com/a/7738854/726863) –