Как я могу добавить изображение в RecyclerView в AdapterClass?

Вот класс компонента продукта введите описание изображения здесь

Итак, мое представление Recycle работает, но эта строка кода не работает. Это из моего класса адаптера.

holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage()));

КЛАСС

@NonNull
@Override
public productViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    LayoutInflater inflater = LayoutInflater.from(mCtx);
    View view = inflater.inflate(R.layout.list_layout,null);
    productViewHolder holder = new productViewHolder(view);
    return holder;
    //  return new productViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull productViewHolder holder, int position) {

    Product product = productList.get(position);
    holder.textViewTitle.setText(product.getTitle());
    holder.textViewDescription.setText(product.getShort_description());
    holder.textViewRating.setText(String.valueOf(product.getRating()));
    holder.textViewPrice.setText(String.valueOf(product.getPrice()));

//    holder.imageView.setImageDrawable(mCtx.getResources().getDrawable(product.getImage()));

}

@Override
public int getItemCount() {
    //returns number of elements within the list
    return productList.size();
}

class productViewHolder extends RecyclerView.ViewHolder{

    ImageView imageView;
    TextView textViewTitle, textViewDescription, textViewRating, textViewPrice;


    public productViewHolder(@NonNull View itemView) {
        super(itemView);

        imageView = itemView.findViewById(R.id.imageView);
        textViewTitle = itemView.findViewById(R.id.textViewTitle);
        textViewDescription = itemView.findViewById(R.id.textViewShortDesc);
        textViewRating = itemView.findViewById(R.id.textViewRating);
        textViewPrice = itemView.findViewById(R.id.textViewPrice);
    }

что такое product.getImage()?

ariefbayu 13.09.2018 05:36

общедоступный продукт (int id, String title, String short_description, Double rating, Double price, int image) {this.id = id; this.title = title; this.short_description = short_description; this.rating = рейтинг; this.price = цена; this.image = изображение; public int getImage () {вернуть изображение; }

D-TECK 13.09.2018 05:39

извините за то, как он может выглядеть, могу ли я отправить сюда изображения?

D-TECK 13.09.2018 05:40

могу я отправить изображение через твиттер?

D-TECK 13.09.2018 05:43

ок, как установить Product? В частности, как получить изображение для ставок, установленное в Product?

ariefbayu 13.09.2018 05:44

Просто поделитесь им здесь (или обновите вопрос дополнительными данными / запрашиваемыми данными)

ariefbayu 13.09.2018 05:44

Я не знал, как я отправил изображение в твиттер. Прошу прощения я совсем новенький

D-TECK 13.09.2018 05:50

не надо извиняться. Просто покажите нам код, в котором вы устанавливаете переменную Product.

ariefbayu 13.09.2018 05:51

я загружаю изображение выше

D-TECK 13.09.2018 05:54

позвонив с помощью get

D-TECK 13.09.2018 06:16
1
10
828
7

Ответы 7

Если ваше изображение в объекте продукта содержит ресурс изображения из вашего пакета с возможностью рисования, вам необходимо использовать

holder.imageView.setImageResource(product.getImage());

Попробуй это:

если вы получаете форму данных api, установите изображение следующим образом

 RequestOptions options = new RequestOptions()
            .centerCrop()
            .placeholder(R.drawable.avatar1)
            .error(R.drawable.avatar1)
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .priority(Priority.HIGH)
            .dontAnimate()
            .dontTransform();

 Glide.with(context)
            .load(UpcomingHistoryList.get(position).getPhotoUrl())
            .apply(options)
            .into(holder.img);

вы можете использовать скольжение и пикассо

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

  ImageView imageView = (ImageView) findViewById(R.id.image);
  imageView.setImageResource(R.drawable.hello);

все файлы в txt. Можете ли вы взглянуть

D-TECK 13.09.2018 07:20

Я думаю, вы получаете строку объекта вашего продукта, вы должны попытаться преобразовать эту строку в Uri или растровое изображение, чтобы, когда вы создаете набор в просмотре изображения, вы можете показать, это очень поможет, если вы покажете свой класс продукта, чтобы знать какой тип значения возвращает product.getimage (); Uri.parse(product.getImage());

Классы и раскладки здесь

D-TECK 13.09.2018 07:21

Дело в том, что когда я удаляю holder.imageView.setImageDrawable (mCtx.getResources (). GetDra‌ wable (product.getIma‌ ge ())); Список отображается, но когда я добавляю это в класс адаптера, все приложение не запускается.

D-TECK 13.09.2018 07:22

хорошо, но вы хотите показать загруженное изображение вашего телефона или папку с возможностью рисования? Хорошо, но вы хотите показать загруженное изображение телефона или папки с возможностью рисования? Можете ли вы отправить снимок экрана с ошибкой? Я предполагаю, что это будет исключение ошибки нулевого указателя

Ricardo Monterrosa Higuita 13.09.2018 07:24

из доступной папки

D-TECK 13.09.2018 07:26

хорошо, используйте библиотеку git в gradle.app ....... реализация 'com.github.bumptech.glide: glide: 3.7.0' luego Glide.with (context) .load (// produc.getimage). fitCenter () .centerCrop () .into (holder.imageview);

Ricardo Monterrosa Higuita 13.09.2018 07:28

о каком конкретно ты думаешь

D-TECK 13.09.2018 07:29

Есть метод, который я использую для загрузки файлов с возможностью рисования, они векторные isset

Ricardo Monterrosa Higuita 13.09.2018 07:31

Есть метод, который я использую для загрузки файлов с возможностью рисования, они векторные isset

 public static BitmapDescriptor getBitmapFromVector(@NonNull Context context,
                                                   @DrawableRes int vectorResourceId,
                                                   @ColorInt int tintColor) {

    Drawable vectorDrawable = ResourcesCompat.getDrawable(
            context.getResources(), vectorResourceId, null);
    if (vectorDrawable == null) {
        String TAG = "tag";
        Log.e(TAG, "Requested vector resource was not found");
        return BitmapDescriptorFactory.defaultMarker();
    }
    Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
            vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    DrawableCompat.setTint(vectorDrawable, tintColor);
    vectorDrawable.draw(canvas);
    return BitmapDescriptorFactory.fromBitmap(bitmap);
}

после этого остается только imageview.setImageBitmap (Bitmapdescriptor (parameters);

При чтении комментариев создается впечатление, что объект вашего продукта хранит изображение в виде строки. Метод getImage () должен возвращать int.

Объявите изображение (с некоторым изображением по умолчанию) в продукте следующим образом:

private int image = R.drawable.default_image;

И геттер будет выглядеть так

public int getImage() {
  return image;
}
// Object class for Product

class Product{

        public Product(String title, String short_description, double rating, double price, int image) {
            this.title = title;
            this.short_description = short_description;
            this.rating = rating;
            this.price = price;
            this.image = image;
        }

        String title;
        String short_description;
        double rating;
        double price;
        int image;
    }


    //Array List of products
    List<Product> productList = new ArrayList<>();
          productList.add(new Product("Title1", "Short Description1", 4, 50, R.drawable.ic_thumb_down));
        productList.add(new Product("Title2", "Short Description2", 3, 100, R.drawable.ic_thumb_down));
        productList.add(new Product("Title3", "Short Description3", 4, 150, R.drawable.ic_thumb_down));




    //Adapter

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

            List<Integer> resourceList;

            public ImageAdapter(List<Integer> resourceList) {
                this.resourceList = resourceList;
            }

            @NonNull
            @Override
            public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                return new ImageViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_image, viewGroup, false));
            }

            @Override
            public void onBindViewHolder(@NonNull ImageViewHolder imageViewHolder, int i) {


              Product product = productList.get(i);
              imageViewHolder.imageView.setImageResource(product.image);
              // Here you can also use other field like title, description, etc... 

            }

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

            class ImageViewHolder extends RecyclerView.ViewHolder{

                ImageView imageView;

                public ImageViewHolder(@NonNull View itemView) {
                    super(itemView);
                    imageView = itemView.findViewById(R.id.imageView3);
                }
            }

        }

Могу ли я заменить Int в массиве на Product? Мои занятия

D-TECK 13.09.2018 07:45

да. вы можете использовать любой объект для массива.

Akash Patel 13.09.2018 08:18

@ D-TECK Обновленный ответ. использовал массив товаров по мере необходимости.

Akash Patel 13.09.2018 08:32

попробуйте использовать:

holder.imageView.setImageDrawable(ContextCompact.getDrawable(ctxt, R.drawable.YOUR_RESOURCE_IMAGE));

если ваш product.getimage () возвращает идентификатор ресурса, который равен R.drwable.YOUR_RESOURCE_IMAGE попробуйте использовать:

  holder.imageView.setImageDrawable(ContextCompact.getDrawable(ctxt, product.getimage()));

Другие вопросы по теме