繁体   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