gpt4 book ai didi

java - 如何使用 Firestore 在 fragment 中使用 RecyclerView - Android

转载 作者:行者123 更新时间:2023-12-02 03:13:34 24 4
gpt4 key购买 nike

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


}
}

这是我的 fragment :

    @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 是您的数据数组。

文档 here

关于java - 如何使用 Firestore 在 fragment 中使用 RecyclerView - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com