मेरा लक्ष्य एक एपीआई का उपयोग करके कई छवि यूआरएल लाने और उन छवियों को 2 डी रीसाइक्लरव्यू में लोड करना है। मैं डेटा प्राप्त करने के लिए रेट्रोफ़िट का उपयोग कर रहा हूँ और Glide छवियों को पुनर्चक्रण दृश्य में प्रदर्शित करने के लिए उपयोग कर रहा हूँ।

जाहिर है, यूआरएल लाने में कोई समस्या नहीं है। लेकिन रीसाइक्लरव्यू में कोई छवि लोड नहीं की जा रही है और यह कोई अपवाद या चेतावनी भी प्रदर्शित नहीं कर रही है।

यहां बताया गया है कि मैंने रीसाइक्लरव्यू को कैसे प्रारंभ किया है: (कक्षा: HdrPhotoFragment.java)

        mRecyclerView = view.findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(
                new GridLayoutManager(getContext(), SPAN_COUNT)
        );

यहाँ मैंने onResponse() में मॉडल लाने और पुनर्चक्रण के लिए एडेप्टर सेट करने के लिए क्या किया है: (कक्षा: HdrPhotoFragment.java)

            @Override
            public void onResponse(Call<List<HdrPhotoListItemModel>> call, Response<List<HdrPhotoListItemModel>> response) {
                Log.d(TAG, "onResponse: " + response.code());
                if (response.code() != 200) {
                    Log.d(TAG, "onResponse: error fetching image data. CODE: ");
                    Toast.makeText(getContext(), "Error loading images", Toast.LENGTH_SHORT).show();
                    return;
                }
                mHdrPhotoModelList = response.body();
//                Log.d(TAG, "onResponse: response body" + response.body().toString());
                for (HdrPhotoListItemModel model : mHdrPhotoModelList) {
                    Log.d(TAG, "onResponse: Model = " + model.toString());
                }
                HdrPhotoListItemAdapter adapter = new HdrPhotoListItemAdapter(mHdrPhotoModelList, HdrPhotoFragment.this);
                mRecyclerView.setAdapter(adapter);
            }

और यह मेरी onBindViewHolder() विधि है जहां मैंने ग्लाइड का उपयोग करके छवि को लोड करने का प्रयास किया है: (कक्षा: HdrPhotoListItemAdapter.java)

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        HdrPhotoListItemModel itemModel = mHdrPhotoList.get(position);
//        holder.imageView.setImageResource(itemModel.getImageUrl());
        String url = Constants.BASE_URL + itemModel.getImageUrl();
        Log.d(TAG, "onBindViewHolder: URL: " + url);
        Glide.with(holder.imageView.getContext())
                .load(url)
                .into(holder.imageView);
    }

यह ध्यान दिया जाना चाहिए कि onBindViewHolder() में प्राप्त यूआरएल सटीक है।

0
ganjaam 5 फरवरी 2021, 10:18

2 जवाब

सबसे बढ़िया उत्तर

मुझे यकीन नहीं है कि किस कारण से छवि लोड नहीं हो रही थी। ग्लाइड के बजाय पिकासो लाइब्रेरी का उपयोग करने से यह समस्या हल हो गई।

onBindViewHolder() विधि के अंदर, मैंने अभी-अभी बदला है

        Glide.with(holder.imageView.getContext())
                .load(url)
                .into(holder.imageView);

निम्नलिखित पंक्ति के साथ:

        Picasso.get().load(url).into(holder.imageView);

हालांकि यह काम करता है, मैं सराहना करता हूं अगर कोई मुझे बता सकता है कि यह ग्लाइड के साथ क्यों काम नहीं करता है। मेरा अनुमान है कि इसका संदर्भ से कुछ लेना-देना है।

0
ganjaam 8 फरवरी 2021, 09:55

यह काम करना चाहिए (कोटलिन में कोड स्निपेट)

Glide.with(holder.itemView.context).load(url).into(holder.itemView.findViewById(R.id.image))

एक बार यूआरएल भी चेक करें

0
Shayan Shafiq 5 फरवरी 2021, 21:26