Java 无法在RecyclerView中显示dataSnapshot中的值
我正在使用Java 无法在RecyclerView中显示dataSnapshot中的值,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我正在使用RecyclerView来显示来自我的dataSnapshot的结果,但无法正确显示结果。以前我的JSON树的结构是gameTimes>user_id>game>results,但现在JSON树被缩短为gameTimes>game>results,以便更容易找到用户名 我的dataSnapshot在GameInfoHolder和setGameInfo方法中。在实践中,这可能不是最好的方法,但之前在JSON树更改之前,结果会起作用,但分数的用户名不会显示在结果旁边。不,我只是没有任何结果
RecyclerView
来显示来自我的dataSnapshot
的结果,但无法正确显示结果。以前我的JSON树的结构是gameTimes>user_id>game>results,但现在JSON树被缩短为gameTimes>game>results,以便更容易找到用户名
我的dataSnapshot
在GameInfoHolder
和setGameInfo
方法中。在实践中,这可能不是最好的方法,但之前在JSON树更改之前,结果会起作用,但分数的用户名不会显示在结果旁边。不,我只是没有任何结果。下面我提供了一段数据来显示我的问题
我已经包括了我的JSON树的结构以供参考
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
rootRef = FirebaseDatabase.getInstance().getReference();
我的预期结果是记分板打开,在右侧看到前十名最佳游戏时间的>dataSnapshot,在左侧看到相应的用户名(属于该用户)。对于这些视图,“回收器”视图设置得很好。问题在于如何得到结果。
我的JSON结构有问题吗?您希望这段代码在recycler视图中做什么?它所做的只是将它从Firebase获得的最后一个结果设置为文本视图。它似乎对RecyclerView或适配器没有任何作用。我没有包括适配器,因为我认为它与问题无关。我将更新代码以使其更清晰,因为您的
hiscoreQuery…onDataChange(
不向适配器添加任何数据,我看不出回收器视图如何显示数据。您希望代码做什么?请注意,如果您缩小问题的范围,而不是删除代码,而是孤立地再现问题,通常会更容易提供帮助。请参阅。
DatabaseReference hiscoreRef = rootRef.child("gameTimes").child(userID).child("game");
Query hiscoreQuery = hiscoreRef.orderByChild("gameTime").limitToLast(10);
FirebaseRecyclerOptions<GameInfo> firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<GameInfo>()
.setQuery(hiscoreQuery, GameInfo.class)
.build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<GameInfo, GameInfoHolder>(firebaseRecyclerOptions) {
@Override
protected void onBindViewHolder(@NonNull GameInfoHolder gameInfoHolder, int i, @NonNull GameInfo gameInfo) {
gameInfoHolder.setGameInfo(gameInfo);
}
@NonNull
@Override
public GameInfoHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.firebase_item_file, parent, false);
return new GameInfoHolder(view);
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
private class GameInfoHolder extends RecyclerView.ViewHolder {
private TextView score1;
private TextView namename1;
GameInfoHolder(View itemView) {
super(itemView);
score1 = itemView.findViewById(R.id.score1);
name1 = itemView.findViewById(R.id.name1);
}
void setGameInfo(GameInfo gameInfo) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference hiscoreRef = rootRef.child("gameTimes").child("game");
Query hiscoreQuery = hiscoreRef.orderByChild("gameTime").limitToFirst(10);
hiscoreQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot){
int hiscore = 0;
String uName = "";
for (DataSnapshot ds: dataSnapshot.getChildren()) {
hiscore = ds.child("gameTime").getValue(Integer.class);
uName = ds.child("username").getValue(String.class);
}
Log.d("TAG", String.valueOf(hiscore));
String mScore1 = df.format(hiscore / 1000.0);
score1.setText(mScore1);
String mName1 = uName;
name1.setText(mName1);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException(); // never ignore errors
}
});
}
}
{
"gameTimes" : {
"game" : {
"-LoHuG5ZY_e0Gzs3Phkh" : {
"game_bank" : 0,
"game_count" : 3,
"gameTime" : 7194,
"user_id" : "kzqG0GBns0bGLQdPeV70pO1k4BB2",
"username" : "DataBoi"
},
"-LoHuMQFK7z2nN3kFb3F" : {
"game_bank" : 0,
"game_count" : 2,
"gameTime" : 11784,
"user_id" : "kzqG0GBns0bGLQdPeV70pO1k4BB2",
"username" : "DataBoi"
},
"-LoHvWG32slt1hCXzaei" : {
"game_bank" : 0,
"game_count" : 3,
"gameTime" : 20072,
"user_id" : "kzqG0GBns0bGLQdPeV70pO1k4BB2",
"username" : "DataBoi"
},
"-LoHvWHjhZJ3fqkbWmjy" : {
"game_bank" : 0,
"game_count" : 3,
"gameTime" : 20072,
"user_id" : "kzqG0GBns0bGLQdPeV70pO1k4BB2",
"username" : "DataBoi"
},
"-LoHxnIM7KDce1rxr1MD" : {
"game_bank" : 0,
"game_count" : 2,
"gameTime" : 11470,
"user_id" : "T9psJTZhapPvXFuzo5NZ6bHG6xo1",
"username" : "DataMan"
}
}
},
"userDetails" : {
"T9psJTZhapPvXFuzo5NZ6bHG6xo1" : {
"username" : "DataMan"
},
"kzqG0GBns0bGLQdPeV70pO1k4BB2" : {
"username" : "DataBoi"
}
},
"userInfo" : {
"DataBoi" : {
"kzqG0GBns0bGLQdPeV70pO1k4BB2" : {
"date_of_birth" : "08/08/2018",
"education" : "Master's",
"exercise" : "1 - 2 Hours a Week",
"forename" : "Data",
"gender" : "Male",
"surname" : "Boi",
"username" : "DataBoi"
}
},
"DataMan" : {
"T9psJTZhapPvXFuzo5NZ6bHG6xo1" : {
"date_of_birth" : "01/01/1019",
"education" : "Yes",
"exercise" : "10 Hours or more a Week",
"forename" : "Data",
"gender" : "Male",
"surname" : "Man",
"username" : "DataMan"
}
}
}
}