Пикассо не показывает более одного изображения в адаптере - PullRequest
0 голосов
/ 08 апреля 2020

Я использую адаптер для домашней работы, и в этом объявлении есть также адаптер, который содержит изображения, и я получаю URL-адреса из базы данных Firebase, здесь у меня есть код для получения дополнительной информации.

что такое product.getUrl на самом деле содержащий

D / ADAPTER_IMAGE: [https://firebasestorage.googleapis.com/v0/b/ngf-connection.appspot.com/o/uploads%2FBtech%20CSE%20I%2F917838245010_status_66703835b57940eb8812f50c09aacbd1.jpg?alt=media&token=b9de8228-36f4-496a-9ca5-dc0640f2eb9e 2020-04-08 18: 13: 10.331 12057-12057 / com.ngfcet.ngfconnection D / ADAPTER_IMAGE: https://firebasestorage.googleapis.com/v0/b/ngf-connection.appspot.com/o/uploads%2FBtech%20CSE%20I%2F917248800852_status_200b86ad9f0d43e8aab65037b1588f32.jpg?alt=media&token=47b2f7ed-3cf1-4aea-9883-0f552e24754e 2020-04-08 18: 13: 10.344 12057-12057 / com.ngfcet.ngfconnection D / ADAPTER_IMAGE: https://firebasestorage.googleapis.com/v0/b/ngf-connection.appspot.com/o/uploads%2FBtech%20CSE%20I%2F918400606848_status_cdad13e789b049fcbe4c396cf7170fa6.jpg?alt=media&token=fbb825bf-1aab-4056-b12b-01ca458a21a5 2020-04-08 18: 13: 10.355 12057-12057 / com .ngfcet.ngfconnection D / ADAPTER_IMAGE: https://firebasestorage.googleapis.com/v0/b/ngf-connection.appspot.com/o/uploads%2FBtech%20CSE%20I%2FIMG-20200408-WA0003.jpg?alt=media&token=fb16dd18-26aa-4d28-86ea-de32dbbdbeb4]

Адаптер 1: Основная строка с комментарием // задает другой рекламный код отсюда

import android.content.Context;
import android.net.Uri;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.firebase.database.ValueEventListener;
import com.ngfcet.ngfconnection.R;
import com.ngfcet.ngfconnection.SendHomeworkActivity;
import com.ngfcet.ngfconnection.Util.CoreHelper;
import com.ngfcet.ngfconnection.models.HomeworkStudents;
import com.ngfcet.ngfconnection.models.ImageHomeworkModel;
import com.ngfcet.ngfconnection.models.ImagesModel;

import java.net.URI;
import java.net.URISyntaxException;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;

public class HomeworkAdapter extends RecyclerView.Adapter<HomeworkAdapter.ProductViewHolder> {


    //this context we will use to inflate the layout
    private Context mCtx;
    String dateValue, datePrevValue;
    URI myUri;

    //we are storing all the products in a list
    private List<HomeworkStudents> productList;
    private static SingleClickListener sClickListener;
    ImagesHomeworkAdapter adapter;
    List<ImageHomeworkModel> imagesList;
    CoreHelper coreHelper;


    private static int sSelected = -1;


    //getting the context and product list with constructor
    public HomeworkAdapter(Context mCtx, List<HomeworkStudents> productList) {
        this.mCtx = mCtx;
        this.productList = productList;
    }


    @Override
    public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //inflating and returning our view holder
        LayoutInflater inflater = LayoutInflater.from(mCtx);
        View view = inflater.inflate(R.layout.recycler_home_work, null);
        return new ProductViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ProductViewHolder holder, int position) {
        //getting the product of the specified position
        final HomeworkStudents product = productList.get(position);

        //binding the data with the viewholder views
        holder.textViewDescription.setText(product.getDescription());
        holder.textViewSubject.setText(product.getSubject());

        coreHelper = new CoreHelper(mCtx);
        imagesList = new ArrayList<>();
        adapter = new ImagesHomeworkAdapter(mCtx, imagesList);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(mCtx, 4);
        holder.recyclerViewHomeWorkImages.setHasFixedSize(true);
        holder.recyclerViewHomeWorkImages.setLayoutManager(gridLayoutManager);
        holder.recyclerViewHomeWorkImages.setAdapter(adapter);

        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy & kk:mm:ss");
        Date sourceDate = null;
        try {
            sourceDate = dateFormat.parse(product.getDateTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }

        SimpleDateFormat targetFormat = new SimpleDateFormat("kk:mm");
        String targetdatevalue = targetFormat.format(sourceDate);
        holder.textViewDateTime.setText(targetdatevalue);


        SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy & kk:mm:ss");
        Date dt1 = null;
        try {
            dt1 = format1.parse(product.getDateTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        DateFormat format2 = new SimpleDateFormat("EEEE");
        String finalDay = format2.format(dt1);
        holder.tvDayHomework.setText(finalDay);

        Date realDate = null;

        try {
            realDate = dateFormat.parse(product.getDateTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        SimpleDateFormat dateHomework = new SimpleDateFormat("dd MMM yyyy");
        dateValue = dateHomework.format(realDate);
        holder.tvDateHomework.setText(dateValue);

        if (sSelected == position) {
            holder.textViewDescription.setSingleLine(false);

            if (!product.getAttachments().equals("")) {
                String urls = product.getAttachments();
                String[] urlsArray = urls.split(",");

                for (String url : urlsArray) {
                    Log.d("IMAGE_URL", url);
                    holder.recyclerViewHomeWorkImages.setVisibility(View.VISIBLE);
                    holder.imgButtonDownload.setVisibility(View.VISIBLE);
                    imagesList.add(new ImageHomeworkModel(url, "Name")); // setting another adapter from here

                }
            }

//            holder.mTextView.setBackgroundColor(Color.parseColor("#CBEEEEEE"));
//            holder.mTextView.setTextColor(Color.parseColor("#FBC02D"));
        } else {
            holder.textViewDescription.setSingleLine(true);
            holder.imgButtonDownload.setVisibility(View.GONE);
            holder.recyclerViewHomeWorkImages.setVisibility(View.GONE);
//            holder.mTextView.setBackgroundColor(Color.parseColor("#FFFFFF"));
//            holder.mTextView.setTextColor(Color.parseColor("#000000"));
        }

        holder.imgButtonDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!product.getAttachments().equals("")) {
                    StringTokenizer tokenizer = new StringTokenizer(product.getAttachments(), ",");

                    while (tokenizer.hasMoreTokens()) {
//                        System.out.println(tokenizer.nextToken());
                        Log.d("Attachment Token", tokenizer.nextToken());
                    }

//                    Toast.makeText(mCtx, product.getAttachments(), Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(mCtx, "Nothing to download", Toast.LENGTH_SHORT).show();
                }
            }
        });


        if (position == 0) {
            holder.llDayDateHomework.setVisibility(View.VISIBLE);
        } else {
            HomeworkStudents previous = productList.get(position - 1);

            Date previoudDate = null;
            Date otherDate = null;
            try {
                previoudDate = dateFormat.parse(previous.getDateTime());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            SimpleDateFormat previousDateHomework = new SimpleDateFormat("dd MMM yyyy");
            String previousDateValue = previousDateHomework.format(previoudDate);

            try {
                otherDate = dateFormat.parse(product.getDateTime());
            } catch (ParseException e) {
                e.printStackTrace();
            }
            SimpleDateFormat otherDateHomework = new SimpleDateFormat("dd MMM yyyy");
            String otherDateValue = otherDateHomework.format(otherDate);


            if (previousDateValue.equals(otherDateValue)) {
                holder.llDayDateHomework.setVisibility(View.GONE);
            } else {
                holder.llDayDateHomework.setVisibility(View.VISIBLE);
            }
        }
    }

    @Override
    public int getItemCount() {
        return productList.size();
    }

    class ProductViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        TextView textViewDescription, textViewSubject, textViewDateTime, tvDayHomework, tvDateHomework;
        LinearLayout llDayDateHomework;
        CardView cardViewHomework;
        ImageButton imgButtonDownload;
        RecyclerView recyclerViewHomeWorkImages;

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

            textViewDescription = itemView.findViewById(R.id.tvTitleHomework);
            textViewSubject = itemView.findViewById(R.id.tvSubjectHomework);
            textViewDateTime = itemView.findViewById(R.id.tvDateTimeHomework);
            tvDayHomework = itemView.findViewById(R.id.tvDayHomework);
            tvDateHomework = itemView.findViewById(R.id.tvDateHomework);
            llDayDateHomework = itemView.findViewById(R.id.llDayDateHomework);
            cardViewHomework = itemView.findViewById(R.id.cardViewHomework);
            imgButtonDownload = itemView.findViewById(R.id.imgButtonDownload);
            recyclerViewHomeWorkImages = itemView.findViewById(R.id.recyclerViewHomeWorkImages);

            cardViewHomework.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            sSelected = getAdapterPosition();
            sClickListener.onItemClickListener(getAdapterPosition(), view);
        }

    }

    public void selectedItem() {
        notifyDataSetChanged();
    }

    public void setOnItemClickListener(SingleClickListener clickListener) {
        sClickListener = clickListener;
    }

    public interface SingleClickListener {
        void onItemClickListener(int position, View view);
    }

}

Адаптер 2: Основная строка с комментарием // Настройка изображения с помощью Picasso

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.ngfcet.ngfconnection.R;
import com.ngfcet.ngfconnection.models.ImageHomeworkModel;
import com.squareup.picasso.Picasso;

import java.util.List;

public class ImagesHomeworkAdapter extends RecyclerView.Adapter<ImagesHomeworkAdapter.ImageViewHolder> {

    Context context;
    List<ImageHomeworkModel> imagesList;

    public ImagesHomeworkAdapter(Context context, List<ImageHomeworkModel> imagesList) {
        this.context = context;
        this.imagesList = imagesList;
    }

    @NonNull
    @Override
    public ImagesHomeworkAdapter.ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.picked_img_layout, parent, false);
        return new ImagesHomeworkAdapter.ImageViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ImagesHomeworkAdapter.ImageViewHolder holder, final int position) {
        ImageHomeworkModel product = imagesList.get(position);
        holder.btnRemove.setVisibility(View.GONE);

        Picasso.with(context).load(product.getUrls()).into(holder.imgSetData);  //Setting image with picasso
        Log.d("ADAPTER_IMAGE_URL", product.getUrls());

        if (holder.imgSetData.getDrawable() == null) {
            holder.imgSetData.setImageResource(R.drawable.ic_pdf);
        }
    }

    @Override
    public int getItemCount() {
        return imagesList.size();
    }

    class ImageViewHolder extends RecyclerView.ViewHolder {
        ImageView btnRemove, imgSetData;

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);
            btnRemove = itemView.findViewById(R.id.imgDeleteSelectedImage);
            imgSetData = itemView.findViewById(R.id.imgSetData);
        }
    }
}

Класс модели

public class ImageHomeworkModel {
    private String Urls;
    private String fileName;

    public ImageHomeworkModel(String urls, String fileName) {
        Urls = urls;
        this.fileName = fileName;
    }

    public ImageHomeworkModel(String[] urlsArray, String name) {
    }

    public String getUrls() {
        return Urls;
    }

    public void setUrls(String urls) {
        Urls = urls;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }
}

Пожалуйста, помогите мне решить мою проблема с изображением Пикассо, не отображающим изображение, даже если журнал не показывает ничего

1 Ответ

0 голосов
/ 08 апреля 2020

Эй, я получил ответ на свой вопрос: квадратные скобки, URL-адреса, контактирующие [] в начале и в конце, но

замена не работает

Я делаю

product.getUrls().replace("[", "");
product.getUrls().replace("]", "");

но он не заменяет квадратные btackets.

...