Как я могу использовать RecyclerView во фрагментах, используя Firestore - Android - PullRequest
0 голосов
/ 10 июля 2019

Я хочу использовать recyclerView, чтобы показать некоторые продукты, они находятся внутри firebase-firestore и, чтобы получить их, я использую запрос.После этого я вызываю адаптер, чтобы показать, но ничего не появляется.Вы можете видеть мой адаптер, где:

public class ProdutoRecyclerAdapter extends FirestoreRecyclerAdapter <Produto, ProdutoRecyclerAdapter.ProdutoHolder> {


public ProdutoRecyclerAdapter(@NonNull FirestoreRecyclerOptions<Produto> options) {
    super(options);
}

@Override
protected void onBindViewHolder(@NonNull ProdutoHolder produtoHolder, int i, @NonNull Produto produto) {
    produtoHolder.tNome.setText(produto.getNomeP());
    produtoHolder.tPontos.setText(String.valueOf(produto.getPontosP()));

}

@NonNull
@Override
public ProdutoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.lista_produtos,parent,false);
    ProdutoHolder holder = new ProdutoHolder(v);

    return holder;
}

class ProdutoHolder extends RecyclerView.ViewHolder{
    TextView tNome;
    TextView tPontos;

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

        tNome = itemView.findViewById(R.id.nomeP);
        tPontos= itemView.findViewById(R.id.pontosP);


    }
}

А вот и мой фрагмент:

    @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.store,null);

    toolbar = view.findViewById(R.id.toolbar_loja);
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);


    Query query = produtoRef.orderBy("pontos");

    FirestoreRecyclerOptions<Produto> option = new FirestoreRecyclerOptions.Builder<Produto>()
            .setQuery(query, Produto.class)
            .build();

    adapter = new ProdutoRecyclerAdapter(option);

    recyclerView = (RecyclerView) view.findViewById(R.id.produtos_list);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    recyclerView.setAdapter(adapter);

    return view;
}



@Override
public void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
public void onStop() {
    super.onStop();
    adapter.stopListening();
}

У меня нет ошибок, но на экране ничего не появляется, и я ужесделал отладку, и я знаю, что переменные передают правильное значение.

1 Ответ

0 голосов
/ 10 июля 2019

В вашем адаптере у вас должно быть переопределение getItemCount() и getItem()

/**
     * Gets the item at the specified position from the backing snapshot array.
     *
     * @see ObservableSnapshotArray#get(int)
     */
    @NonNull
    public T getItem(int position) {
        return mSnapshots.get(position);
    }

    @Override
    public int getItemCount() {
        return mSnapshots.isListening(this) ? mSnapshots.size() : 0;
    }

, где mSnapshots - ваш массив данных.

Документация здесь

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