2016-04-13 2 views
0

ist mit Gridview mit BaseAdapter und wenn der Download auf einem gridview Artikel wird durch Drücken des Download-Button verschwinden und Circular Fortschritt Drawable erscheint und voran starten, aber das Problem hier ist, dass, wenn und Artikel heruntergeladen und i blättern, um die Liste der Rund Fortschritte in Bezug auf alle Elemente wird erscheinen, die nicht der wahre Status dieser Elemente ist und hier ist ein Bild enter image description hereUpdate-Gridview-Artikel durch Adapter verursacht Konflikt zwischen dem einzelnen Posten

die erste ist die wahre und die zweite ist nur vermasselt und die Der zirkuläre Fortschritt sollte nicht erscheinen.

Hier ist mein Code og getView() Methode des Adapters:

public View getView(final int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 

      inflater = (LayoutInflater) mContext 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.book_item_to_download, parent, false); 
      convertView.setFocusable(true); 
      convertView.setClickable(true); 

      holderGridView = new BooksViewHolder(); 

      holderGridView.BookImage = (ImageView) convertView.findViewById(R.id.bookBackground); 
      holderGridView.BookName = (TextView) convertView.findViewById(R.id.bookName); 
      holderGridView.BookItemWraper = (LinearLayout) convertView.findViewById(R.id.book_item_wraper); 
      holderGridView.BookDownload=(ImageView) convertView.findViewById(R.id.download); 
      holderGridView.BookProgress=(CircularProgressBar) convertView.findViewById(R.id.demo_mpc); 

      Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Isra-Thin.ttf"); 
      holderGridView.BookName.setTypeface(custom_font); 
      convertView.setTag(holderGridView); 
     } else { 
      holderGridView = (BooksViewHolder) convertView.getTag(); 
     } 

     holderGridView.BookItemWraper.setLayoutParams(new android.widget.AbsListView.LayoutParams((int) Math.round(ScreenWidth/2.1), (int) Math.round(ScreenHeight/2.5))); 
     holderGridView.BookImage.setImageDrawable(getResources().getDrawable(R.drawable.book_background)); 
     holderGridView.BookName.setText(bookCovers.get(position).getBookTitle()); 


     if (bookCovers.get(position).getBookImagePathOnDisk() != null && bookCovers.get(position).getBookImagePathOnDisk().contains("file://")) { 
      Picasso.with(mContext).load(bookCovers.get(position).getBookImagePathOnDisk()).into(holderGridView.BookImage); 
     } else if (bookCovers.get(position).getBookImagePathOnDisk()!= null) { 
      Picasso.with(mContext).load(new File(bookCovers.get(position).getBookImagePathOnDisk())).into(holderGridView.BookImage); 
     } 

     if(convertView.getId()==bookCovers.get(position).getBookID()) 
     { 
      if(bookCovers.get(position).isDownloaded) 
      { 
       holderGridView.BookDownload.setVisibility(View.GONE); 
       holderGridView.BookProgress.setVisibility(View.GONE); 
       holderGridView.BookItemWraper.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         for(int i=0;i<app.bis.size();++i) 
         { 
          if(app.bis.get(i).identifier.equals(bookCovers.get(position).getBookID()+"")) 
          { 
           openBookViewer(app.bis.get(i)); 
           break; 
          } 
         } 
        } 
       }); 
      } 
      else if(bookCovers.get(position).isDownloading) 
      { 
       holderGridView.BookDownload.setVisibility(View.GONE); 
       holderGridView.BookProgress.setVisibility(View.VISIBLE); 
       holderGridView.BookProgress.setProgress(bookCovers.get(position).downloadProgress); 
       holderGridView.BookItemWraper.setOnClickListener(null); 
      } 
      else 
      { 
       holderGridView.BookDownload.setVisibility(View.VISIBLE); 

       holderGridView.BookItemWraper.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent openDetails = new Intent(getActivity(), WaitingBookDetails_Activity.class); 
         openDetails.putExtra(Constants.BOOK_COVER, Parcels.wrap(bookCovers.get(position))); 
         startActivity(openDetails); 
        } 
       }); 

       holderGridView.BookDownload.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         new downloadEPUB_Task(bookCovers.get(position),position).execute(); 
        } 
       }); 
      } 
     } 



     return convertView; 
    } 

Dank im Voraus

Antwort

1

Das Problem tritt aufgrund Recycling von Ansichten ist. hinzufügen

holderGridView.BookProgress.setVisibility(View.GONE); 

vor Ihrer IF Bedingung äußeren

if(convertView.getId()==bookCovers.get(position).getBookID()) 
     { 
.. 
} 

und setzen

holderGridView.BookProgress.setVisibility(View.VSIBLE); 

in denen, wenn sonst blockiert, wo Sie es wollen zeigen. ja

+0

danke paaren ich es nur Sekunden herausgefunden, bevor Sie Ihre Antwort schreiben kann ich nicht glauben, dass es mir dauerte eine Stunde, um einen Reim –

Verwandte Themen