पिकासो (एंड्रॉइड) लोड की पूरी घटनाओं के लिए कैसे सुनें?


90

क्या बिल्डर का उपयोग करते समय पिकासो की घटनाओं को सुनने का एक तरीका है:

Picasso.with(getContext()).load(url).into(imageView);

मैं कॉल करने की कोशिश कर रहा हूं requestLayout()और invalidate()अभिभावक पर GridViewतो यह ठीक से आकार लेगा, लेकिन मुझे नहीं पता कि श्रोता या कॉलबैक कैसे सेट करें।

मैं देखता हूं कि पिकासो ने त्रुटि घटना की रिपोर्टिंग की है, लेकिन क्या कोई सफल घटना है?

जवाबों:


270

तुम CallbackonSuccess और onError घटनाओं को प्राप्त करने के लिए उपयोग कर सकते हैं । बस अपने अनुरोध में एक नया कॉलबैक जोड़ें:

Picasso.with(getContext())
    .load(url)
    .into(imageView, new com.squareup.picasso.Callback() {
                        @Override
                        public void onSuccess() {

                        }

                        @Override
                        public void onError() {

                        }
                    });

तब आप ऑन कॉल असफल कॉलबैक में कोई भी परिवर्तन और संशोधन कर सकते हैं।


1
त्रुटि छवि कैसे दिखाए जब onrror () निष्पादित किया जाता है ??
जस

2
.error(R.drawable.error_placeholder_image)त्रुटि छवि सेट करने के लिए उपयोग करें
Raptor

मैं onSuccess के अंदर से 'यह' संदर्भ कैसे एक्सेस कर सकता हूं? मुझे 'इस' संदर्भ में कुछ चर अद्यतन करने की आवश्यकता है, और यह भी कि मैं कॉलबैक के अंदर इमेज व्यू तक कैसे पहुंच सकता हूं? Thx
सोनोलुमिनेसेंस

2
इस YourClassName.this.yourVariable @sonoluminescence प्रयास करें
सोफ़िएन Hassaini

1
कोटलिन में यह कैसा दिखेगा?
Dan2899

31

यदि दृश्य को लोड करने से पहले आपको बिटमैप तक पहुंचने की आवश्यकता है, तो उपयोग करने का प्रयास करें:

private Target target = new Target() {
      @Override
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {       
      }
      @Override
      public void onBitmapFailed() {
      }
}

कॉलिंग विधि में:

Picasso.with(this).load("url").into(target);

आदर्श रूप से आप लक्ष्य को सीधे किसी दृश्य या दृश्य धारक ऑब्जेक्ट पर लागू करेंगे।

उम्मीद है की यह मदद करेगा


imgView कहाँ है?
नूर हुसैन

@NoorHossain ने बिटमैप लोड होने पर इमेज बिटमैप सेट किया
famfamfam

6

उत्तर देना @Jas ऊपर सवाल MrEngineer13 के जवाब के लिए एक टिप्पणी के रूप में पालन करें (के बाद से मैं किसी भी सवाल का जवाब में टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है), तो आप का उपयोग करना चाहिए error()पंजीकरण के करने से पहले विधि Callbackमें into(), विधि उदाहरण के लिए:

Picasso.with(getContext())
    .load(url)
    .error(R.drawable.error_placeholder_image)
    .into(imageView, new com.squareup.picasso.Callback() {
        @Override
        public void onSuccess() {
            //Success image already loaded into the view
        }

        @Override
        public void onError() {
            //Error placeholder image already loaded into the view, do further handling of this situation here
        }
    }
);

6

स्क्वायर ने हाल ही में टारगेट क्लास को अपडेट किया है और अब ओवरराइड ( onPrepareLoadऔर onBitmapFailed) करने के अधिक तरीके हैं :

Target target = new Target() {
    @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
    }

    @Override
    public void onBitmapFailed(Drawable errorDrawable) {

    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {

    }
};

और आपको अभी भी उपयोग करना है:

Picasso.with(context).load(url).into(target);

3
 private final Callback mImageCallback = new Callback() {
        @Override
        public void onSuccess() {
            startPostponedEnterTransition();
        }

        @Override
        public void onError() {
            startPostponedEnterTransition();
        }
    };

RequestCreator creator = Picasso.with(getActivity()).load(list.get(position).getId());
creator.into(imageView, mImageCallback);

0

इसे इस्तेमाल करे

       Picasso.with(context)
            .load(services.get(position).getImageInactive())
            .into(holder.icon, new Callback() {
                @Override
                public void onSuccess() {
                    holder.imageLoad.setVisibility(View.GONE);
                }

                @Override
                public void onError() {
                    holder.icon.setImageResource(R.drawable.ic_error_image_load);
                }
            });

0

अन्य उत्तरों के पूरक के रूप में, यदि आपको पता नहीं है कि मूल छवि दृश्य का उपयोग कहाँ करना है, उदाहरण के लिए ImageView myIV:

मूल:

Picasso.with(activity).load(url).into(myIV);

नई (अंदर onBitmapLoaded()की new Target()):

public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
    myIV.setImageBitmap(bitmap);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.