【发布时间】:2019-08-24 09:31:29
【问题描述】:
我在 Top Child 中有 UID。在 Top Child 下,我还有 2 个孩子:Name 和 Exchange。我想获得 Top Exchange 值并在 recyclerview 中显示它们。最高的交换将在顶部,第二个将在第二个位置,第三个将在第三个。我正在使用 firebaserecycleradapter 连续获取所有值。但我想将最高值降至最低。
这里是类:
TopRef = FirebaseDatabase.getInstance().getReference().child("Top");
recyclerView = views.findViewById(R.id.topRec);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
Query query = TopRef.orderByChild("Exchange").limitToLast(20);
FirebaseRecyclerOptions options = new FirebaseRecyclerOptions.Builder<TopAdapter>()
.setQuery(query,TopAdapter.class)
.build();
adapter = new FirebaseRecyclerAdapter<TopAdapter, TopFragment.TopAdapterHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull final TopFragment.TopAdapterHolder holder, int position, @NonNull TopAdapter model) {
String userIds = getRef(position).getKey();
assert userIds != null;
TopRef.child(userIds).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("Name")){
String name = dataSnapshot.child("Name").getValue(String.class);
Long exchange = dataSnapshot.child("Exchange").getValue(Long.class);
holder.Name.setText(name);
holder.Exchange.setText(String.valueOf(exchange));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@NonNull
@Override
public TopFragment.TopAdapterHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.topview,viewGroup,false);
return new TopFragment.TopAdapterHolder(view);
}
};
recyclerView.setAdapter(adapter);
这是适配器类:
public class TopAdapter {
String Name;
String Exchange;
public TopAdapter() {
}
public TopAdapter(String name, String exchange) {
Name = name;
Exchange = exchange;
}
public String getName() {
return Name;
}
public String getExchange() {
return Exchange;
}
}
崩溃日志:发现两个 getter 或属性区分大小写冲突的字段:exchange
【问题讨论】:
-
请不要描述您的数据库的外观,而是将您的数据库结构添加为 JSON 文件或至少作为屏幕截图。
-
@AlexMamo Bro 我现在没有任何数据。这就是为什么写结构
-
@AlexMamo 检查
-
TopRef是如何定义的? -
TopRef= FirebaseDatabase.getInstance().getReference().child("Top");
标签: java android firebase firebase-realtime-database