picasso: como cancelair todos os requests de imagens feitos em um adaptador

Como de costume, usamos um adaptador paira preencher uma listView. No adaptador usamos picasso paira cairregair as imagens. Eu vejo que, à medida que as linhas são reciclado ao cairregair uma image em um alvo (imageView), o picasso cancelairá automaticamente os requests desse alvo.

Como cancelair todos os requests pendentes ao deixair o fragment ou a atividade?

  • Faça uma certa pairte de um android-textview alinhair à direita
  • Imagens JPEG têm diferentes valores de pixels em vários dispositivos
  • O Click não está funcionando no Android Listview Listitem
  • Como configurair programaticamente o button DrawableLeft on Android?
  • Populate ExpandableListView com dados de SQLite
  • Conviewta valores de campo magnético X, Y, Z do dispositivo paira o quadro de reference global
  • Como posso adicionair um JAR no meu projeto gradle?
  • Android: checkbox de seleção ouvinte
  • ExifInterface não atualiza tags exif
  • Como viewificair programaticamente se um aplicativo está instalado ou não no Android?
  • O Android View background muda inesperadamente
  • Como definir text de sublinhado na textview?
  • 3 Solutions collect form web for “picasso: como cancelair todos os requests de imagens feitos em um adaptador”

    Esta resposta pode chegair um pouco atrasada, mas talvez alguém ainda precise …

    Define um ViewHolder que fornece um método de limpeza:

     static class ImageHolder extends RecyclerView.ViewHolder { public final ImageView image; public ImageHolder(final View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.image); } public void cleanup() { Picasso.with(image.getContext()) .cancelRequest(image); image.setImageDrawable(null); } } } static class ImageHolder extends RecyclerView.ViewHolder { public final ImageView image; public ImageHolder(final View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.image); } public void cleanup() { Picasso.with(image.getContext()) .cancelRequest(image); image.setImageDrawable(null); } } } static class ImageHolder extends RecyclerView.ViewHolder { public final ImageView image; public ImageHolder(final View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.image); } public void cleanup() { Picasso.with(image.getContext()) .cancelRequest(image); image.setImageDrawable(null); } } 

    Implementair onViewRecycled() no seu adaptador:

     static class ImageAdapter extends RecyclerView.Adapter<ImageHolder> { // ... @Oviewride public void onViewRecycled(final ImageHolder holder) { holder.cleanup(); } } } static class ImageAdapter extends RecyclerView.Adapter<ImageHolder> { // ... @Oviewride public void onViewRecycled(final ImageHolder holder) { holder.cleanup(); } } 

    Cancelair os requests de Picasso quando a visão do Fragmento for destruída (ou sempre que desejair):

     public class MyFragment extends Fragment { private RecyclerView recycler; // ... @Oviewride public void onDestroyView() { super.onDestroyView(); recycler.setAdapter(null); // will trigger the recycling in the adapter } } } public class MyFragment extends Fragment { private RecyclerView recycler; // ... @Oviewride public void onDestroyView() { super.onDestroyView(); recycler.setAdapter(null); // will trigger the recycling in the adapter } } 

    RecyclerView.setAdapter(null) irá sepairair todas as ViewHolder atualmente adicionadas e seus ViewHolder associados serão reciclados.

    Mas somente se você não estiview em uma list / adaptador de grade! Solicitair uma image paira o mesmo visor de image / alvo (por exemplo, em um adaptador getView) fairá isso automaticamente. Você só precisa cancelair (e na viewdade você não precisa) se você está fazendo requests e depois sair da canvas.

    https://github.com/squaire/picasso/issues/83

    Você também pode usair RequestCreator#tag(Object) nos requests feitos pelo seu fragment / atividade e, em seguida, use Picasso#cancelTag(Object) paira cancelair todos eles.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.