2015-01-20 3 views
0

나는 리사이클 뷰에 이미지가있다.피카소 안드로이드가있는 RecyclerView

@Override 
    public void onBindViewHolder(ViewHolder viewHolder, final int position) { 
     // Get element from your dataset at this position and replace the contents of the view 
     // with that element 
     if(mEntities.get(position).url.equals("kosong")) { 
      Log.e("LOAD", "KOSONG " + position); 
      viewHolder.getTextDataView().setText(mEntities.get(position).data); 
     } 
     else{ 
      Log.e("LOAD", "ISI " + position); 
      Picasso.with(mContext).load(mEntities.get(position).url).skipMemoryCache().into(viewHolder.imageView); 
      viewHolder.getTextDataView().setText(mEntities.get(position).data);   
     } 
    } 

이미지가 올바른 목록에서 recyclerview에로드되도록 만들었지 만, 어떻게 든 그 recyclerview의 다른 목록에 복제됩니다. 왜 ? 답변에 대한

감사합니다 :)

+0

그리고 내가 거기에 있는지 확인하십시오 당신이 그것을 사용하는 (if(mEntities.get(position).url.equals("kosong"))를)하지 않으려는 경우처럼

뭔가를 사용하여 이미지를 삭제하는 것을 잊지 마십시오 else 조건이 앞에 나오면 거짓이 아니지만 어떻게 든 그것은 여전히 ​​임의의 목록에 이미지를 복제합니다. – user2565280

답변

1

그래서 나는 당신의 URL이 포함 된 경우 이해하는 것과 "kosong"당신이 어떤 이미지를 오른쪽으로 표시되지해야합니까?

그러나 이전 이미지의 이미지 뷰를 지우지는 않습니다. listviews/recycler 뷰는 뷰를 재활용한다는 점에 유의하십시오. 따라서 이미지 뷰에 이미지를 표시 한 다음 나중에 (위아래로 스크롤) 이미지 뷰를 재활용하면 이미지 뷰에 설정된 마지막 이미지가 포함됩니다. 그것은이 같은해야한다 그래서 viewHolder.imageView.setImageResource(android.R.color.transparent);

:

if(mEntities.get(position).url.equals("kosong")) { 
     Log.e("LOAD", "KOSONG " + position); 
     viewHolder.getTextDataView().setText(mEntities.get(position).data); 
     //we don't need to display an image here however it's possible that our listview contains another image from a recycled row. Let's clear it 
     viewHolder.imageView.setImageResource(android.R.color.transparent); 
    } 
    else{ 
     Log.e("LOAD", "ISI " + position); 
     Picasso.with(mContext).load(mEntities.get(position).url).skipMemoryCache().into(viewHolder.imageView); 
     viewHolder.getTextDataView().setText(mEntities.get(position).data);   
    } 
+0

무엇 !!!! 감사합니다 :))) 그것이 작동합니다. – user2565280

관련 문제