Для цикла не работает в моем Quires Firestore - PullRequest
0 голосов
/ 13 ноября 2018

Я застрял в проекте, который мне нужен, чтобы получить данные из документа в коллекции.В настоящее время я использую 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) {


    }
}

}

введите описание изображения здесь

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...