【发布时间】:2018-09-18 23:26:28
【问题描述】:
我想为列表视图中选择的项目用户运行 getKey(),以便我可以使用此键来确定将用户带到哪里,我尝试了很多 stackoverflow 解决方案,但失败了许多不同的错误.. . 非常感谢您的帮助,非常感谢!
详情如下:
-
Firebase 数据填充到适配器列表视图 -- 没有错误
UserId = FirebaseAuth.getInstance().getCurrentUser().getUid(); final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference gameInfoRef = rootRef.child("user").child(UserId).child("gameInfo"); gameInfoRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { ListView lv_SelectGame = findViewById(R.id.lv_SelectGame); GameList.clear(); for (DataSnapshot ds : dataSnapshot.getChildren()) { Game game = ds.getValue(Game.class); GameList.add(game); } History_SelectGameAdapter adapter = new History_SelectGameAdapter(ida_History_SelectGame.this, GameList); lv_SelectGame.setAdapter(adapter); } @Override public void onCancelled(DatabaseError databaseError) { // Getting Post failed, log a message } }); 用户点击 Listview 项,返回该特定游戏的密钥(由之前在其他活动中的 push() 生成,存储在 firebase 中) -- 请告知解决方案,谢谢!
Firebase 数据:(列表视图中的每个项目都按日期显示)
gameInfo
-LMIdDTDiUd3ajVVMdzC
gameDate: "2018-09-01"
gameMode: "SomeMode"
-LMOGEUbCTsaeywPICqi
gameDate: "2018-09-06"
gameMode: "SomeMode"
-LMQfCQ7TO21WP3qW7v3
gameDate: "2018-09-15"
gameMode: "SomeMode"
现在是我不知道怎么写的部分,谢谢!
(当我点击 Listview 项时,Toast 显示没有任何错误,但我不知道如何获取位置并基于它运行 getKey())
lv_SelectGame.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
ListView lv_SelectGame = findViewById(R.id.lv_SelectGame);
Toast.makeText(ida_History_SelectGame.this, "getKey() of this item", Toast.LENGTH_SHORT).show();
}
【问题讨论】: