Я застрял в проекте, который мне нужен, чтобы получить данные из документа в коллекции.В настоящее время я использую Firestore для Android Studio.Дело в том, что мой запрос показывает тост сразу после task.isSuccessful
, но цикл For
не получает данные из облака, даже не показывая тест Toast, который я поместил внутри цикла.Все работает нормально, пока не дойдет до цикла For
.RecyclerView
показывает содержимое только в том случае, если я вручную ввожу параметры для теста, поэтому адаптер работает нормально, но когда я пытаюсь показать данные из огненной бури, он ничего не показывает!Любая идея?Это не показывает никакой ошибки!
public class MostrarConteudoFragment extends AppCompatActivity {
RecyclerView recyclerView2;
List<Compras> listaCompras = new ArrayList<>();
Compras compras;
FirebaseFirestore db;
FirebaseUser user;
FirebaseAuth mAuth;
SavedFragment savedFragment;
public String idUpdate = ""; // id do item para o update
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mostrar_conteudo_fragment);
db = FirebaseFirestore.getInstance();
mAuth = FirebaseAuth.getInstance( );
user = mAuth.getCurrentUser( );
recyclerView2 = findViewById(R.id.recyclerView2);
savedFragment = new SavedFragment();
}
protected void onStart(){
super.onStart();
if(listaCompras.size() > 0)
listaCompras.clear();
db.collection("Usuario").document(user.getUid()).collection("ItensSalvos")
.whereEqualTo("id", idUpdate).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
Toast.makeText(MostrarConteudoFragment.this, "task succcessful", Toast.LENGTH_SHORT).show( );
for (QueryDocumentSnapshot doc : task.getResult( )) {
Toast.makeText(MostrarConteudoFragment.this, "doc succcessful", Toast.LENGTH_SHORT).show( );
compras = new Compras(doc.getString("id"),
doc.getString("inputNome"),
doc.getString("inputQtd"),
doc.getString("inputPreco"),
doc.getBoolean("checkBoxOk"));
listaCompras.add(compras);
}
//Configurar adapter
AdapterMostrarConteudo mostrarConteudo = new AdapterMostrarConteudo(MostrarConteudoFragment.this, listaCompras);
//Configurar RecyclerView
RecyclerView.LayoutManager layoutManager1 = new LinearLayoutManager(getApplicationContext( ));
recyclerView2.setLayoutManager(layoutManager1);
recyclerView2.setHasFixedSize(true);
recyclerView2.setAdapter(mostrarConteudo);
}
}
});
}
}
открытый класс AdapterSave extends RecyclerView.Adapter {
List<DataHora> listaDataHora;
SavedFragment savedFragment;
MostrarConteudoFragment mostrarConteudo;
public AdapterSave(SavedFragment savedFragment, List<DataHora> listaDataHora) {
this.savedFragment = savedFragment;
this.listaDataHora = listaDataHora;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemLista = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.lista_salvas, viewGroup, false);
mostrarConteudo = new MostrarConteudoFragment();
return new MyViewHolder(itemLista);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
myViewHolder.data.setText(listaDataHora.get(i).getData());
myViewHolder.hora.setText(listaDataHora.get(i).getHora());
myViewHolder.setItemClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
mostrarConteudo.idUpdate = listaDataHora.get(position).getId();
Intent intent = new Intent(savedFragment.getActivity(), MostrarConteudoFragment.class);
savedFragment.startActivity(intent );
Toast.makeText(savedFragment.getContext(), mostrarConteudo.idUpdate, Toast.LENGTH_SHORT).show( );
}
});
}
@Override
public int getItemCount() {
return listaDataHora.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnCreateContextMenuListener {
TextView data, hora;
ItemClickListener itemClickListener;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnCreateContextMenuListener(this);
data = itemView.findViewById(R.id.textData);
hora = itemView.findViewById(R.id.textHora);
}
// Metodo construtor da interface ItemClickListener
public void setItemClickListener(ItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
@Override // Permite abrir o menu com o click
public void onClick(View view) {
itemClickListener.onClick(view, getAdapterPosition(), false);
}
@Override // Cria o menu quando item é clicado
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
}
}
}
введите описание изображения здесь
введите описание изображения здесь