Растровое изображение не отображается в recyclerVire - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать список изображений с recyclerView. Но изображения не отображаются в утилизаторе. Мой код:

// Активность:

Я установил onClick в кнопке, и пользователь может выбрать изображение из галереи. Затем код Добавить BitMap в список.

publi c класс AddRemoveRecyclerActivity расширяет AppCompatActivity {

private RecyclerView recyclerViewAddImages;
private ImageButton buttonAddNewImage;
private List<Imagem> listImagens = new ArrayList<>();

private String[] permissoesNecessarias = new String[]{
        Manifest.permission.READ_EXTERNAL_STORAGE
};

private static final int SELECAO_GALERIA = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_remove_recycler);

    //Validar Permissões:
    Permissao.validarPermissoes(permissoesNecessarias, this, SELECAO_GALERIA);

    //Inicializar Componentes:
    recyclerViewAddImages = findViewById(R.id.recyclerViewAddImages);
    buttonAddNewImage = findViewById(R.id.buttonAddNewImage);

    //Set Adapter:
    AdapterImagem adapter = new AdapterImagem(listImagens, this);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this, RecyclerView.HORIZONTAL, false);
    recyclerViewAddImages.setLayoutManager(layoutManager);
    recyclerViewAddImages.setHasFixedSize(true);
    recyclerViewAddImages.setAdapter(adapter);

    buttonAddNewImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            adicionarImagem();
        }
    });
}

private void adicionarImagem(){
    Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    if (i.resolveActivity(getPackageManager()) != null){
        startActivityForResult(i, SELECAO_GALERIA);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK) {


    try {
        switch (requestCode){
            case SELECAO_GALERIA:
                Uri localImagemSelecionada = data.getData();
                InputStream imageStream = getContentResolver().openInputStream(localImagemSelecionada);
                Bitmap imagem = BitmapFactory.decodeStream(imageStream);
                if (imagem!= null){
                    Imagem imagemConfigurada = new Imagem();
                    imagemConfigurada.setImagem(imagem);
                    listImagens.add(imagemConfigurada);
                }
                break;

        }
    }catch (Exception e){
        e.printStackTrace();
    }

    }

}

}

В адаптере код получает Bitmap из списка и задает его в представлении изображения:

publi c класс AdapterImagem расширяет RecyclerView.Adapter {

List <Imagem> list;
Context context;

public AdapterImagem(List<Imagem> list, Context context) {
    this.list = list;
    this.context = context;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View item = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_add_photo, parent, false);
    return new AdapterImagem.MyViewHolder(item);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
    Imagem imagem = list.get(position);
    holder.newImagem.setImageBitmap(imagem.getImagem());

}

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

public class MyViewHolder extends RecyclerView.ViewHolder{

    ImageView newImagem;

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

        newImagem = itemView.findViewById(R.id.newImage);

    }
}

}

Модель списка:

publi c класс Imagem {

private Bitmap imagem;

public Imagem() {
}

public Imagem(Bitmap imagem) {
    this.imagem = imagem;
}

public Bitmap getImagem() {
    return imagem;
}

public void setImagem(Bitmap imagem) {
    this.imagem = imagem;
}

}

...