Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在RecyclerView中显示dataSnapshot中的值_Java_Android_Firebase Realtime Database - Fatal编程技术网

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"
      }
    }
  }
}