簡體   English   中英

如何使用Firestore在片段中使用RecyclerView-Android

[英]How can I use RecyclerView in fragments using Firestore - Android

我想使用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();
}

我沒有任何錯誤,但是屏幕上沒有任何顯示,並且我已經進行了調試,並且我知道變量傳遞了正確的值。

在您的適配器上,您應該覆蓋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是您的數據數組。

此處文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM