我目前正在尝试将我的Firebase数据库中的内容读入recyclerView
中,但我希望将它们从最后一个节点加载到第一个节点。所以我决定将键放入一个数组中,然后尝试从数组的末尾读到前面,但是当我尝试访问键数组时,我看到的是不能为child()
中的参数'path string'传递null错误。
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<UpcomingList, UpcomingViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<UpcomingList, UpcomingViewHolder>(
UpcomingList.class,
R.layout.upcoming_event_row,
UpcomingViewHolder.class,
mDatabase
) {
@Override
protected void populateViewHolder(final UpcomingViewHolder viewHolder, UpcomingList model, int position) {
/*String CurrentString = date.toString().trim();
StringTokenizer tokens = new StringTokenizer(CurrentString, "/");
final String first = tokens.nextToken();
final String second = tokens.nextToken();*/
//final String post_key = getRef(position).getKey();
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i = 0;
for (DataSnapshot d : dataSnapshot.getChildren()) {
key[i] = d.getKey();
i++;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
for (int counter = key.length - 1; counter >= 0; counter--) {
viewHolder.setUpDate(first + "/" + key[counter]);
mDatabase.child(key[counter]).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
StringBuilder builder = new StringBuilder();
for (DataSnapshot child : dataSnapshot.getChildren()) {
builder.append(child.getKey().toString() + "\n\n");
}
viewHolder.setName(builder.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
};
upcomingRV.setAdapter(firebaseRecyclerAdapter);
}
你正在被异步编程101所折磨。您需要确保需要键[]
内容的代码在OnDataChange
中,一旦加载键,就会调用该代码。
在这种情况下,这意味着它应该看起来像这样
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int i = 0;
for (DataSnapshot d : dataSnapshot.getChildren()) {
key[i] = d.getKey();
i++;
}
for (int counter = key.length - 1; counter >= 0; counter--) {
viewHolder.setUpDate(first + "/" + key[counter]);
mDatabase.child(key[counter]).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
StringBuilder builder = new StringBuilder();
for (DataSnapshot child : dataSnapshot.getChildren()) {
builder.append(child.getKey().toString() + "\n\n");
}
viewHolder.setName(builder.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
我的结构数据库数据库结构 这是我的用户类
问题内容: 我在firebase中执行查询时遇到错误,我的查询代码如下所示: 但是我收到以下错误: 异常java.lang.RuntimeException:无法启动活动ComponentInfo {ucarparceiro.ucarapp.com.ucarparceiro / ucarparceiro.ucarapp.com.ucarparceiro.Activity.ActivityPrinc
这个问题的解决方案是什么?问题在这里,代码在这里: > 列表项 在BindViewHolder上公开无效(@nonNull HolderOrderShop持有人,int位置){ //转换时间日历=日历。getInstance();日历setTimeInMillis(Long.parseLong(orderTime));String formattedate=DateFormat。格式(“日/月/年
我试图从rest控制器触发一个spring批处理作业,我需要向步骤传递参数。我使用了一个SystemCommandTasklet,正如这里所建议的那样,我将该Tasklet添加为StepListener,但我一直得到一个NPE。 我在这里创建了一个示例项目:如果您运行测试,您将在输出中看到以下内容:
在使用RestAssured的cucumber api测试中,我试图将路径参数作为空/空传递。 例如,当我以>>http://localhost:8093/my-rest-call//指令调用endpoint时 它给404但我希望是500。在《邮递员》中,它和预期的一样工作 但是,如果末尾的path参数为null/empty。如下所示,我得到了500个内部服务器错误。 我尝试的其他选项是have“
我最近将firebase数据库的订单更改为Location,我知道我漏了一些东西,但我找不到确切的问题。有人能指出我在这里做错了什么吗?