列表返回空值

时间:2018-11-07 09:23:34

标签: android firebase firebase-realtime-database android-adapter

我正在制作一个物品清单,在清单中,我携带以下信息id,idPostagem,descrição,nomeUsuario和fotoUsuario。

设置好值后,我立即检查了它们,并全部显示正确,但是当我尝试将其显示为null时,以下字段id,idPostagem,descrição和fotoUsuario显示为空。

有人知道我会在哪里出错,为什么在设置值之后立即通过Toast测试时,它们是正确的,当我使用get进行提取时,它们显示为空吗?

设置值:

final ItemSalvo itemSalvo = new ItemSalvo();
itemSalvo.setId(feed.getId());
itemSalvo.setDescricao(feed.getDescricao());
itemSalvo.setFotoPostagem(feed.getFotoPostagem());
itemSalvo.setFotoUsuario(feed.getFotoUsuario());
itemSalvo.setNomeUsuario(feed.getNomeUsuario());

Log.i("Teste get: ", "Descrição - " + itemSalvo.getDescricao());
Log.i("Teste get: ", "Foto postagem - " + itemSalvo.getFotoPostagem());
Log.i("Teste get: ", "Foto usuario - " + itemSalvo.getFotoUsuario());
Log.i("Teste get: ", "Id - " + itemSalvo.getId());
Log.i("Teste get: ", "Nome - " + itemSalvo.getNomeUsuario());

设置值时的日志结果:

I/Test set:: Descrição - teste da descrição
I/Test set:: Foto postagem - https://firebasestorage.googleapis.com/v0/b/tecmaf-59ebf.appspot.com/o/imagens%2Fpostagens%2F-LQYYTzgsU--x9Pj6vle.jpeg?alt=media&token=21c779fd-b0cf-4a41-b2c4-3db06b82a868 
I/Test set:: Foto usuario - https://firebasestorage.googleapis.com/v0/b/tecmaf-59ebf.appspot.com/o/imagens%2Fperfil%2FdXN1YXJpb0B0ZWNtYWYuY29tLmJy.jpeg?alt=media&token=fd144b1c-7509-4b2a-ba11-bb3f912c6ce7
I/Test set:: Id - -LQYYTzgsU--x9Pj6vle
I/Test set:: Nome - USUARIO

当我在适配器中测试相同的值时:

I/Test get:: Descrição - null
I/Test get:: Foto postagem - null
I/Test get:: Foto usuario - null
I/Test get:: Id - null
I/Test get:: Nome - USUARIO

Firebase结构:

enter image description here

活动:

public class ItensSalvosActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private RecyclerView recyclerItensSalvos;
    private ItensSalvosAdapter itensSalvosAdapter;
    private List<ItemSalvo> listaItemSalvo = new ArrayList<>();
    private ValueEventListener valueEventListenerItensSalvos;
    private DatabaseReference itensSalvosRef;
    private String idUsuarioLogado;


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

        idUsuarioLogado = Base64Custom.codificarBase64(UsuarioFirebase.getIdentificadorUsuario());

        itensSalvosRef = ConfiguracaoFirebase.getFirebase().child("itens-salvos").child(idUsuarioLogado);

        toolbar = (Toolbar) findViewById(R.id.tb_itens);
        toolbar.setTitle("Itens salvos");
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        recyclerItensSalvos = findViewById(R.id.recyclerItensSalvos);

        itensSalvosAdapter = new ItensSalvosAdapter(listaItemSalvo, ItensSalvosActivity.this);
        recyclerItensSalvos.setHasFixedSize(true);
        recyclerItensSalvos.setLayoutManager(new LinearLayoutManager(ItensSalvosActivity.this));
        recyclerItensSalvos.setAdapter(itensSalvosAdapter);

    }

    private void listarItensSalvos() {

        valueEventListenerItensSalvos = itensSalvosRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                listaItemSalvo.clear();

                for(DataSnapshot ds : dataSnapshot.getChildren()){

                    listaItemSalvo.add(ds.getValue(ItemSalvo.class));

                }

                Collections.reverse(listaItemSalvo);
                itensSalvosAdapter.notifyDataSetChanged();

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

    @Override
    protected void onStart() {
        super.onStart();
        listarItensSalvos();
    }

    @Override
    protected void onStop() {
        super.onStop();
        itensSalvosRef.removeEventListener(valueEventListenerItensSalvos);
    }
}

适配器:

     public class ItensSalvosAdapter extends RecyclerView.Adapter<ItensSalvosAdapter.MyViewHolder>    {

    private List<ItemSalvo> listaItemSalvo;
    private Context context;

    public ItensSalvosAdapter(List<ItemSalvo> listaItemSalvo, Context context) {
        this.listaItemSalvo = listaItemSalvo;
        this.context = context;
    }


    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View itemLista = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_itens_salvos, parent, false);
        return new ItensSalvosAdapter.MyViewHolder(itemLista);

    }

    @Override
    public void onBindViewHolder(@NonNull final ItensSalvosAdapter.MyViewHolder holder, int position) {

        //Dando null - Descricao, FotoPerfil, FotoPostagem,
        //recupera ItemSalvo atual pela posicao
        final ItemSalvo itemSalvo = listaItemSalvo.get(position);
        final Usuario usuarioLogado = UsuarioFirebase.getDadosUsuarioLogado();

          //Fazer verificacão de caso n tenha foto, aparecer drawable avatar
        if (itemSalvo.getFotoUsuario().isEmpty()) {

            //setar a imagem avatar como subistituta
            holder.imageFotoPerfilItensSalvos.setImageResource(R.drawable.avatar);

        } else {

            Uri uriFotoUsuario = Uri.parse(itemSalvo.getFotoUsuario());
            Glide.with(context).load(uriFotoUsuario).into(holder.imageFotoPerfilItensSalvos);

        }

        holder.textNomeItensSalvos.setText(itemSalvo.getNomeUsuario());

          //Fazer a verificacao de caso n tenha descricao, aparecer o texto programado
        if (itemSalvo.getDescricao().isEmpty()){

            holder.textDescricaoItensSalvos.setText("Publicação de " + itemSalvo.getNomeUsuario() + " salva!");

        }else {

            holder.textDescricaoItensSalvos.setText(itemSalvo.getDescricao());

        }

        Uri uriFotoPostagem = Uri.parse(itemSalvo.getFotoPostagem());
        Glide.with(context).load(uriFotoPostagem).into(holder.imageViewFotoPostagem);

    }

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

    public class MyViewHolder extends RecyclerView.ViewHolder {

        ImageView imageViewFotoPostagem;
        CircleImageView imageFotoPerfilItensSalvos;
        TextView textNomeItensSalvos, textDescricaoItensSalvos;

        public MyViewHolder(View itemView) {

            super(itemView);

                imageViewFotoPostagem = itemView.findViewById(R.id.imageViewFotoPostagem);
                imageFotoPerfilItensSalvos = itemView.findViewById(R.id.imageFotoPerfilItensSalvos);
                textNomeItensSalvos = itemView.findViewById(R.id.textNomeItensSalvos);
                textDescricaoItensSalvos = itemView.findViewById(R.id.textDescricaoItensSalvos);
        }

    }
}

型号:

public class ItemSalvo {

    private String id;
    private String fotoPostagem;
    private String descricao;
    private String nomeUsuario;
    private String fotoUsuario;

    public ItemSalvo() {
    }

    public String getFotoPostagem() {
        return fotoPostagem;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setFotoPostagem(String fotoPostagem) {
        this.fotoPostagem = fotoPostagem;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;

    }

    public String getNomeUsuario() {

        return nomeUsuario;

    }

    public void setNomeUsuario(String nomeUsuario) {
        this.nomeUsuario = nomeUsuario;
    }

    public String getFotoUsuario() {
        return fotoUsuario;
    }

    public void setFotoUsuario(String fotoUsuario) {
        this.fotoUsuario = fotoUsuario;
    }

}

0 个答案:

没有答案