List returning null values
up vote
0
down vote
favorite
I am making an item listing, in that listing I bring the following information id, idPostagem, descrição, nomeUsuario and fotoUsuario.
Right after setting the values, I checked them and I'm all displaying correctly, but when I try to display it shows as null the following fields id, idPostagem, descrição and fotoUsuario.
Does anyone know where I can be going wrong and why when I test through Toast, right after setting the values, they are correct and when I pull with get they appear as nulls?
Setting the values:
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());
Result of Log when I set the values:
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
When I test the same values in adapter:
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 Structure:
Activity:
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);
}
}
Adapter:
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);
}
}
}
Model:
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;
}
}
android firebase firebase-realtime-database android-adapter
|
show 4 more comments
up vote
0
down vote
favorite
I am making an item listing, in that listing I bring the following information id, idPostagem, descrição, nomeUsuario and fotoUsuario.
Right after setting the values, I checked them and I'm all displaying correctly, but when I try to display it shows as null the following fields id, idPostagem, descrição and fotoUsuario.
Does anyone know where I can be going wrong and why when I test through Toast, right after setting the values, they are correct and when I pull with get they appear as nulls?
Setting the values:
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());
Result of Log when I set the values:
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
When I test the same values in adapter:
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 Structure:
Activity:
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);
}
}
Adapter:
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);
}
}
}
Model:
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;
}
}
android firebase firebase-realtime-database android-adapter
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
The another fields shows null
– Luis Felipe
Nov 7 at 9:47
|
show 4 more comments
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am making an item listing, in that listing I bring the following information id, idPostagem, descrição, nomeUsuario and fotoUsuario.
Right after setting the values, I checked them and I'm all displaying correctly, but when I try to display it shows as null the following fields id, idPostagem, descrição and fotoUsuario.
Does anyone know where I can be going wrong and why when I test through Toast, right after setting the values, they are correct and when I pull with get they appear as nulls?
Setting the values:
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());
Result of Log when I set the values:
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
When I test the same values in adapter:
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 Structure:
Activity:
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);
}
}
Adapter:
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);
}
}
}
Model:
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;
}
}
android firebase firebase-realtime-database android-adapter
I am making an item listing, in that listing I bring the following information id, idPostagem, descrição, nomeUsuario and fotoUsuario.
Right after setting the values, I checked them and I'm all displaying correctly, but when I try to display it shows as null the following fields id, idPostagem, descrição and fotoUsuario.
Does anyone know where I can be going wrong and why when I test through Toast, right after setting the values, they are correct and when I pull with get they appear as nulls?
Setting the values:
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());
Result of Log when I set the values:
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
When I test the same values in adapter:
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 Structure:
Activity:
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);
}
}
Adapter:
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);
}
}
}
Model:
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;
}
}
android firebase firebase-realtime-database android-adapter
android firebase firebase-realtime-database android-adapter
edited Nov 8 at 10:42
asked Nov 7 at 9:23
Luis Felipe
219
219
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
The another fields shows null
– Luis Felipe
Nov 7 at 9:47
|
show 4 more comments
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
The another fields shows null
– Luis Felipe
Nov 7 at 9:47
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
The another fields shows null
– Luis Felipe
Nov 7 at 9:47
The another fields shows null
– Luis Felipe
Nov 7 at 9:47
|
show 4 more comments
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53186569%2flist-returning-null-values%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Have you considered making the private fields in ItemSalvo public?
– Cool Guy CG
Nov 7 at 9:36
from where are you setting the value?
– gratien asimbahwe
Nov 7 at 9:43
@CoolGuyCG No, i didnt consider, but the field nomeUsuario is correct, it shows a value.
– Luis Felipe
Nov 7 at 9:45
@gratienasimbahwe I am setting on another Adapter, I test the value and it set correctly
– Luis Felipe
Nov 7 at 9:46
The another fields shows null
– Luis Felipe
Nov 7 at 9:47