未在RecyclerView

时间:2017-02-15 12:47:01

标签: android imageview android-recyclerview

我开始使用Android编程。 我有几天有问题,我想问你是否可以帮助我。 我想展示一个带有不同布局,文本和图像的recyclerView。 我有这个代码,第一种类型,文本正在工作,但图像没有出现。

感谢。

    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
    Historias object = mList.get(position);
    if (object != null) {
        switch (object.getTipoHistoria()) {
            case tipo_texto:
                ((CityViewHolder) holder).mTitle.setText(object.getTexto());
                break;
            case tipo_imagen:

                StorageReference storageRef = storage.getReferenceFromUrl("gs://xx.appspot.com/imagenes/un-gato-bebe-433.jpg");

                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        new RetrieveFeedTask().execute(uri.toString());

                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        // Handle any errors
                    }
                }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                    @Override
                    public void onComplete(@NonNull Task<Uri> task) {
                        ((EventViewHolder) holder).mImage.setImageBitmap(feed);
                    }
                });

                break;
        }
    }
}

2 个答案:

答案 0 :(得分:2)

我建议使用特殊的lib从web或sd下载照片。这里有一些:

Picasso

Picasso.with(context).load("path_to_image").into(imageView);

Glide

Glide.with(this).load("path_to_image").into(imageView);

答案 1 :(得分:1)

只需删除switch case,因为您知道当用户输入switch语句时,只会执行1个案例,因此只有您的设置文本被执行而不是图像

 public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
    Historias object = mList.get(position);

                 holder.mTitle.setText(object.getTexto());


                StorageReference storageRef = storage.getReferenceFromUrl("gs://xx.appspot.com/imagenes/un-gato-bebe-433.jpg");

                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        new RetrieveFeedTask().execute(uri.toString());

                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        // Handle any errors
                    }
                }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                    @Override
                    public void onComplete(@NonNull Task<Uri> task) {
                        holder.mImage.setImageBitmap(feed);
                    }
                });


        }
    }
}

我建议你使用毕加索或滑动库加载图片,它超级容易加载图片

编辑。

只需使用holder即可。而不是((EventViewHolder) holder)