gpt4 book ai didi

android - fragment 中的 RecyclerView 不工作(无法向其添加数据)

转载 作者:行者123 更新时间:2023-11-30 05:12:05 25 4
gpt4 key购买 nike

这是我的 fragment

public class TransactionsFragment extends Fragment {
private FirebaseAuth mAuth;
private DatabaseReference mDBref;
FirebaseUser Fuser;
private String UID;
private RecyclerView recyclerView;
private RecyclerView.Adapter trpAdapter;
private List<TransGetterSetter> DataList;
String trans_id;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_transactions, container, false);

DataList = new ArrayList<>();

recyclerView = (RecyclerView) v.findViewById(R.id.RVList);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
TransactionRVAdapter trvAdapter = new TransactionRVAdapter(DataList, getContext());
recyclerView.setAdapter(trvAdapter);

mAuth = FirebaseAuth.getInstance();
mDBref = FirebaseDatabase.getInstance().getReference();
Fuser = mAuth.getInstance().getCurrentUser();
UID = Fuser.getUid();



mDBref.child("transactions").child(UID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot chidSnap : dataSnapshot.getChildren()) {
trans_id = chidSnap.getKey();
DataList.add(new TransGetterSetter("" + trans_id));

}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
trvAdapter.notifyDataSetChanged();

return v;
}

}

如果我 toast “trans_id”字符串我得到预期的结果。

这是我的适配器类

    public class TransactionRVAdapter extends RecyclerView.Adapter<TransactionRVAdapter.rvViewHolder> {
Context mContext;
List<TransGetterSetter> DataList = new ArrayList<>();

public class rvViewHolder extends RecyclerView.ViewHolder{
private TextView TransId;

public rvViewHolder(@NonNull View itemView) {
super(itemView);
TransId = (TextView) itemView.findViewById(R.id.TransIdTxt);
}
}

public TransactionRVAdapter( List<TransGetterSetter> DataList,Context mContext){
this.DataList = DataList;
this.mContext = mContext;
}

@NonNull
@Override
public rvViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.fragment_transactions_item, viewGroup, false);
return new rvViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull rvViewHolder rvViewHolder, int i) {
rvViewHolder.TransId.setText(DataList.get(i).getTrans_id());
}

@Override
public int getItemCount() {
return DataList.size();
}

}

这是我的 GetterSetter 类

public class TransGetterSetter {

private String trans_id;

public TransGetterSetter() {

}

public TransGetterSetter(String trans_id) {
this.trans_id = trans_id;
}

public String getTrans_id() {
return trans_id;
}

public void setTrans_id(String trans_id) {
this.trans_id = trans_id;
}


}

我能够从 firebase 获取数据,但是当我尝试将其添加到回收站 View 时,它没有显示任何数据。回收站 View 显示为空。我多次检查我的代码,但没有找到解决方案。

最佳答案

你应该调用:

trvAdapter.notifyDataSetChanged();

在 (onDataChange) 事件监听器中的 for 循环之后。

关于android - fragment 中的 RecyclerView 不工作(无法向其添加数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539854/

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