毕加索仅从缓存中加载6张图像

时间:2018-11-07 16:03:33

标签: android image picasso

由于某种原因,毕加索仅显示20张图像中的6张。它显示前6张图像,然后重复这些图像。我正在从网上获取图像。

有什么主意吗?

Picasso.get().load(response.body().getMediaDetails()
.getSizes().getFull().getSourceUrl())
.fetch(new com.squareup.picasso.Callback() {
  @Override
  public void onSuccess() {}

  @Override
  public void onError(Exception e) {

    // Try again online if cache failed
    Picasso.get()
   .load(response.body().getMediaDetails().getSizes().getFull().getSourceUrl())
    .placeholder(R.drawable.test_img_size)
    .error(R.drawable.test_img_size)
    .into(imageView);

  }
});

ViewAdapter.java

import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class RecyclerViewAdapter extends 
 RecyclerView.Adapter<RecyclerView.ViewHolder> {

private ArrayList<Model> dataset;
private Context mContext;
private ArrayList<Model> list;
private RecyclerViewAdapter adapter;
private RecyclerView recyclerView;
private LinearLayoutManager mLayoutManager;
public static List<WPPost> mListPost;
ArrayList<String> imagepath = new ArrayList<>();
private String baseURL = "https://www.myfitbytes.com/";

public RecyclerViewAdapter(ArrayList<Model> mlist, Context context) {
    this.dataset = mlist;
    this.mContext = context;
}

public static class ImageTypeViewHolder extends RecyclerView.ViewHolder{


    TextView title, subtitle, date;
    ImageView imageView;
    CardView cardview;

    public ImageTypeViewHolder(View itemView) {
        super(itemView);

        this.title = (TextView)  itemView.findViewById(R.id.title);
      //this.subtitle = (TextView) itemView.findViewById(R.id.subtitle);
        this.date = (TextView) itemView.findViewById(R.id.date);
        this.imageView = (ImageView) itemView.findViewById(R.id.Icon);
        this.cardview = (CardView) itemView.findViewById(R.id.cardview);
    }
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from( parent.getContext()).inflate(R.layout.postdetails, parent, false);





    return new ImageTypeViewHolder(view) ;
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    final Model object = dataset.get(position);
   // Log.d("RecyclerViewAdapter", "IMAGE="+object.Image);
    imagepath.add(position, "");

    if (Build.VERSION.SDK_INT >= 24)
    {
        //( (ImageTypeViewHolder) holder).subtitle.setText(Html.fromHtml(object.subtitle , Html.FROM_HTML_MODE_LEGACY));
        ( (ImageTypeViewHolder) holder).title.setText( Html.fromHtml(object.title , Html.FROM_HTML_MODE_LEGACY) );
        ( (ImageTypeViewHolder) holder).date.setText( Html.fromHtml(object.date , Html.FROM_HTML_MODE_LEGACY) );
    }
    else
    {
        //( (ImageTypeViewHolder) holder).subtitle.setText(Html.fromHtml(object.subtitle ));
        ( (ImageTypeViewHolder) holder).title.setText( Html.fromHtml(object.title ));
        ( (ImageTypeViewHolder) holder).date.setText( Html.fromHtml(object.date ));
    }


      ( (ImageTypeViewHolder) holder).imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(mContext, WPPostDetails.class);
            intent.putExtra("itemPosition", position);
            mContext.startActivity(intent);
        }
    });



    try {
        getthumbnail(object.Image, ( (ImageTypeViewHolder) holder).imageView, position);



    }catch (Exception e){
     //   Log.e("adapter ","failed to get image "+e.toString() );
    }
    /// dataset.get(position)



}


public void getthumbnail(String imageurl, final ImageView imageView, final int position){

    ServiceWrapper serviceWrapper = new ServiceWrapper(null);
    Call<GetThumbnail> call = serviceWrapper.getThumbnailCall(imageurl);
    call.enqueue(new Callback<GetThumbnail>() {


        @Override
        public void onResponse(Call<GetThumbnail> call, final Response<GetThumbnail> response) {
            if (response.body() != null && response.isSuccessful()) {
                try {

                    if (response.body().getMediaDetails()!=null){

                       // Log.e("recycler adapter", " image is here--  " + response.body().getMediaDetails().getSizes().getThumbnail().getSourceUrl());
                       // Log.e("Full IMG SIZE - ", " THIS IS FULL IMAGE URL--  " + response.body().getMediaDetails().getSizes().getFull().getSourceUrl());

                        imagepath.add(position, response.body().getMediaDetails().getSizes().getFull().getSourceUrl());


                        Picasso.get()
                                .load(response.body().getMediaDetails().getSizes().getFull().getSourceUrl())
                                .fetch(new com.squareup.picasso.Callback() {
                                    @Override
                                    public void onSuccess() {


                                    }

                                    @Override
                                    public void onError(Exception e) {

                                        // Try again online if cache failed
                                        Picasso.get()
                                                .load(response.body().getMediaDetails().getSizes().getFull().getSourceUrl())
                                                .placeholder(R.drawable.test_img_size)
                                                .error(R.drawable.test_img_size)
                                                .into(imageView);

                                    }
                                });


//Glide.with(mContext)                                    
//.load(response.body().getMediaDetails().getSizes().getFull().getSourceUrl())
//.downloadOnly(new SimpleTarget<File>() {
//@Override
//public void onResourceReady(File resource, GlideAnimation<? super File> 
//glideAnimation) {
//Glide.with(mContext)

//.load(response.body().getMediaDetails().getSizes().getFull().getSourceUrl())                                                    
//.diskCacheStrategy(DiskCacheStrategy.SOURCE)
 //.into(imageView);
 //}
 //});


                    }else {

                    }
                }catch (Exception e){
                   // Log.e("adapter", "fail not media tag "+ e.toString());
                }

            }
        }

        @Override
        public void onFailure(Call<GetThumbnail> call, Throwable t) {

          //  Log.e("adapter", " faile  image "+t.toString());
        }
    });

}




@Override
public int getItemCount() {

    return dataset.size() ;
  }
 }

因此,正如某些建议所建议,并且您可能会看到,我尝试使用林间空地,但没有成功。 问题是相同的,当用户上下滚动图像时,一遍又一遍地重新加载。而且,有时它只缓存20张图片中的6张(它应该以这种方式缓存每张图片,这样应用程序将显示缓存中的图片,而不是从Web提取)

1 个答案:

答案 0 :(得分:0)

如果您的问题是缓存,请尝试使用方法 skipMemoryCache() memoryPolicy(MemoryPolicy.NO_CACHE)