2016-03-28 11 views
-1

Ich verwende diese ArrayAdapter-Klasse, um Bild in Listview anzuzeigen. aber es zeigt kaum 1 oder 2 Bilder und kann schnell arbeiten und Bild zeigen. Auch wenn ich es nach oben scrolle, wird das Bild verschwinden.Bild wird nicht mit Picasso-Bibliothek in Listview angezeigt ArrayAdapter

@SuppressLint("ViewHolder") 
public class New_Contest_ArrayAdapter extends ArrayAdapter<String> 
{ 
    private final Context context; 
    private final String[] contest_names; 
    private final String[] contest_start_dates; 
    private final String[] contest_end_dates; 
    private final String[] contest_pic_path; 
    int selected_pos=0; 

    public New_Contest_ArrayAdapter(Context context, int pos,String[] values,String[] values1,String[]values2,String[]pic_path) 
    { 
    super(context, pos, values); 
    this.context = context; 
    this.contest_names = values; 
    this.selected_pos=pos; 
    this.contest_start_dates=values1; 
    this.contest_end_dates=values2; 
    this.contest_pic_path=pic_path; 
    } 

    static class ViewHolder 
    { 
     public ImageView imgvw; 
     public TextView namesTV,datesTV,livestatusTV; 
     Button viewBTN,deleteBTN; 


     } 


    @SuppressWarnings("unused") 
@Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 
     View rowView = null ; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if (rowView == null) 
    { 
     holder = new ViewHolder(); 
    // rowView = inflater.inflate(R.layout.new_contest_adapter,null); 
     rowView = inflater.inflate(R.layout.new_contest_adapter, parent, false);  

    holder.namesTV = (TextView) rowView.findViewById(R.id.textView1); 
    holder.datesTV = (TextView) rowView.findViewById(R.id.textView2); 
    holder.livestatusTV = (TextView) rowView.findViewById(R.id.imageView2); 
    holder.imgvw=(ImageView)rowView.findViewById(R.id.imageView1); 
    rowView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) rowView.getTag(); 
    } 


    holder.namesTV.setText(""+contest_names[position]); 
    holder.datesTV.setText("Started On: "+contest_start_dates[position]); 
    holder.livestatusTV.setText("End On:  "+contest_end_dates[position]); 

    if(contest_pic_path[position].length()>5) 
    { 
     setImagesUsingPicasso(contest_pic_path[position],holder.imgvw); 
    // Picasso.with(context).load(contest_pic_path[position]).fit().centerCrop().into(imgvw); 
    } 
    else 
     holder.imgvw.setImageResource(R.drawable.contest_icon); 

return rowView; 

    } 

    //((((((Loading Profile Pic with PICASSO Library)))))))) 
    private void setImagesUsingPicasso(String imagePath,final ImageView profileIV) 
    { 

      String url="http://pir.alphasols.com/VotingAppFolder/ContestProfilePicFolder/"+imagePath; 

     // Toast.makeText(getContext(), ""+url, Toast.LENGTH_LONG).show(); 
      Log.e("url- ",""+url); 

     Picasso.with(context).load(url).into(new Target() 
     { 

      public void onBitmapLoaded (Bitmap bitmap, Picasso.LoadedFrom from) 
      { 
       // theView.setImageBitmap(bitmap);    

       //bitmap=getRoundedRectBitmap(bitmap, 100); 
       profileIV.setImageBitmap(bitmap); 


      } 

      @Override 
      public void onBitmapFailed(Drawable arg0) 
      { 
      } 

      @Override 
      public void onPrepareLoad(Drawable arg0) { 
       // TODO Auto-generated method stub 

      } 
    }); 
    }  

//(((Make Round Cirle IMAGEVIEW)))) 
    public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int radius) 
    { 

     Bitmap finalBitmap; 
     if (bitmap.getWidth() != radius || bitmap.getHeight() != radius) 
       finalBitmap = Bitmap.createScaledBitmap(bitmap, radius, radius, 
          false); 
     else 
       finalBitmap = bitmap; 
     Bitmap output = Bitmap.createBitmap(finalBitmap.getWidth(), 
        finalBitmap.getHeight(), Config.ARGB_8888); 
     Canvas canvas = new Canvas(output); 

     final Paint paint = new Paint(); 
     final Rect rect = new Rect(0, 0, finalBitmap.getWidth(), 
        finalBitmap.getHeight()); 

     paint.setAntiAlias(true); 
     paint.setFilterBitmap(true); 
     paint.setDither(true); 
     canvas.drawARGB(0, 0, 0, 0); 
     paint.setColor(Color.parseColor("#BAB399")); 
     canvas.drawCircle(finalBitmap.getWidth()/2 + 0.7f, 
        finalBitmap.getHeight()/2 + 0.7f, 
        finalBitmap.getWidth()/2 + 0.1f, paint); 
     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
     canvas.drawBitmap(finalBitmap, rect, rect, paint); 

     return output; 


    } 



} //EOF Class 

Antwort

0

Ist das (viel einfacher) nennen Picasso.with(context).load(url).into(profileIV); zu arbeiten? Sind Sie sicher, dass die URL korrekt ist?

BTW: View rowView = null ; sollte View rowView = convertView ; Ich denke, und Sie können den getSystemService() Aufruf innerhalb der If-Anweisung verschieben.

+0

Lassen Sie mich den Code zu Ihrem ändern, und dann sagen Sie –

+0

Soory, ich ändere den Code, jetzt ist es das ganze Bild mischen –

+0

Bitte versuchen Sie die 'R.drawable.contest_icon' mit Picasso, auch. –