2013-05-13 2 views
1

listview에서 버튼과 진행 표시 줄 (보이지 않음)이 있습니다. 버튼을 클릭하면 사라지고 진행 막대가 표시되고 실행이 시작되고 (웹 서버에서 다운로드) 작업이 완료되면 실행 버튼이 다시 표시됩니다. 이제 첫 번째 항목의 단추를 클릭하면 진행률 표시 줄이 실행되지만 첫 번째 항목이 화면에서 사라질 때까지 아래로 스크롤하면 listview의 마지막 항목에서 첫 번째 항목의 진행률 막대와 동시에 진행률 막대가 실행됩니다. 위로 스크롤하면 첫 번째 항목의 진행 표시 줄이 정상적으로 실행됩니다. 두 번째 항목을 클릭하면 listview의 두 번째 마지막 항목도 똑같이 수행됩니다. 문제는 무엇이며 어떻게 해결할 수 있습니까? 도와주세요!!!아래로 스크롤 할 때 목록보기 오류가 발생했습니다.

+1

관련 소스 코드를 게시하십시오. – ozbek

+0

코드를 공유하십시오. – Ishtiaq

+0

으로 기록을 섞을 수 있습니까? – Ishtiaq

답변

0

다운로드 할 위치, 진행 상태 (무기한 막대를 표시하지 않는 경우)를 기억하고 어댑터의 getView에서 해당 값을 업데이트해야합니다. 이것은 실제로 실제로 매우 복잡해집니다. 다운로드가 끝나면 뷰를 다시 업데이트하려면 listview가 작동하는 방식과 뷰를 재생하는 방식에 대해 매우 신중하게 코딩해야합니다. 그렇지 않으면 전체를 업데이트해야합니다. 파일의 다운로드가 완료되거나 진행 상황이 업데이트 될 때마다 listview가 표시되므로 깜박임이 발생할 수 있습니다.

0

프로세스가 완료 될 때까지 listview의 상태를 유지하는 viewHolder 클래스의 개념을 선택하십시오. Urs의 주요 문제는 u를 사용하여 목록 뷰를 스크롤하면 뷰가 새로 고침을 받으면 초기 상태가됩니다. viewholder 클래스를

링크 초기화 의 getView 방법에

Class ViewHolder 
{ 
TextView mtext; 
Button mButton; 
ProgressBar mBar; 
} 

:

http://developer.android.com/training/improving-layouts/smooth-scrolling.html http://developer.android.com/training/contacts-provider/display-contact-badge.html

0

이런 식으로 뭔가를하려고 ... 난 PDF 다운로드에 대해 서로 다른 견해를 사용하고 있지만, 당신은 할 수 이 개념 사용

Holder holder; 
    class Holder { 
     TextView txt_pdfname; 
     Button btn_download; 
     ImageView img_pdficon; 
    } 

    @Override 
    public View getView(final int arg0, View arg1, ViewGroup arg2) { 


     // position=arg0; 
     View v=arg1; 
     if (v == null) { 
      holder = new Holder(); 
      v = layoutInflater.inflate(R.layout.cell_document, arg2,false); 
      holder.txt_pdfname = (TextView) v.findViewById(R.id.txt_pdfname); 
      holder.img_pdficon=(ImageView)v.findViewById(R.id.img_pdficon); 
      holder.btn_download = (Button) v.findViewById(R.id.btn_download); 
      v.setTag(holder); 

     } else{ 
      holder = (Holder) v.getTag(); 

     } 
     File pdfFile=new File(Environment.getExternalStorageDirectory().toString()+"/fpapdf/"+(pdfUrl[arg0].substring(pdfUrl[arg0].lastIndexOf('/')+1))); 
     if(pdfFile.exists()){ 
      holder.btn_download.setVisibility(View.INVISIBLE); 

     }else 
      holder.btn_download.setVisibility(View.VISIBLE); 
     holder.txt_pdfname.setText(this.pdfArray[arg0]); 
     holder.img_pdficon.setImageResource(pdfImage[arg0]); 

     holder.btn_download.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // YOUR CODE HERE 

      } 

     }); 

     return v; 
    } 
자세한 내용은 1,363,210

당신이 태그에서보다 다른 때마다 새로운보기를 얻을 것이다, 나는이에 의한 경우 (보기 == null이)를 제거하고 this by Romain

+0

이것은 정확히 내가 한 방식입니다. 그러나 나는 아직도 문제에 직면 해있다. – casper

0

그냥이와의 getView 교체를 참조

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
final ArrayList<String> array=JournalArray.get(position); 
final ViewHolder view; 
LayoutInflater inflator = activity.getLayoutInflater(); 

    view = new ViewHolder(); 
    convertView = inflator.inflate(R.layout.familylist_item, null); 
    view.progress=(ProgressBar)convertView.findViewById(R.id.downprogress); 
    view.txtViewTitle = (TextView) convertView.findViewById(R.id.text); 
    view.imgViewFlag = (ImageView) convertView.findViewById(R.id.imageView1); 
    view.imgAR=(Button)convertView.findViewById(R.id.imageAR); 
    view.imgAR.setTag(view); 
    view.imgDown=(Button)convertView.findViewById(R.id.imageDown); 
    view.imgDown.setTag(view); 
    view.imgPDF=(Button)convertView.findViewById(R.id.imagePDF); 
    view.imgPDF.setTag(view); 
    view.progress=(ProgressBar)convertView.findViewById(R.id.downprogress); 
    view.btnDel=(Button)convertView.findViewById(R.id.btnDel); 
    view.btnDel.setTag(view); 
    convertView.setTag(view); 
} 
+0

해봤지만 같은 문제가 계속 발생했습니다 – casper

+0

다시 설치하려고 했습니까? – Ishtiaq

관련 문제