在 ListView 中使用 Score 属性显示 Firebase 数据
尝试在 ListView 中显示 Firebase 数据中的用户 ID 和分数时,分数值最初可能不可用。这是解决此问题并有效呈现这两个属性的综合指南。
Firebase API 的异步性质
用于从 Firebase 检索数据的 onDataChange() 方法是异步的,这意味着可以在将 Score 对象添加到列表之前调用它。要解决此问题,请在 onDataChange() 方法中声明列表或采用有效处理异步行为的技术。
数据结构和类型
确保您的 Score 类遵循数据成员的 Java 命名约定。另外,修改如下:
public class Score { private String userId; private String score; // ... [other class methods] }
使用 String 进行数据检索和显示
要使用 String 类显示数据,请使用下面的代码片段:
ListView listView = (ListView) findViewById(R.id.list_view); List<String> list = new ArrayList<>(); // Declare list within onDataChange() method ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list); listView.setAdapter(arrayAdapter); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference scoreRef = rootRef.child("score"); ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { String userId = ds.child("userId").getValue(String.class); String score = ds.child("score").getValue(String.class); list.add(userId + " / " + score); } arrayAdapter.notifyDataSetChanged(); } // ... [onCancelled() method] }; scoreRef.addListenerForSingleValueEvent(eventListener);
使用分数进行数据检索和显示类
要使用 Score 类检索和显示数据,请使用以下代码片段:
ValueEventListener eventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { Score score = ds.getValue(Score.class); String userId = score.getUserId(); String score = score.getScore(); list.add(userId + " / " + score); } arrayAdapter.notifyDataSetChanged(); } // ... [onCancelled() method] }; scoreRef.addListenerForSingleValueEvent(eventListener);
以上是如何在 ListView 中高效显示 Firebase 用户 ID 和分数?的详细内容。更多信息请关注PHP中文网其他相关文章!