【发布时间】:2019-06-23 11:26:19
【问题描述】:
Listview 未在 tablayout 的片段中显示,我正在从 firebase 实时数据库获取数据。
我尝试过使用 listfragment,但它不起作用。
public class AdminManagerListFragment extends Fragment {
private ListView managersList;
private ArrayList<String> managers;
private ArrayAdapter<String> adapter;
public AdminManagerListFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_admin_manager_list, container, false);
managers = new ArrayList<String>();
listOfManagers();
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, managers);
managersList = (ListView) view.findViewById(R.id.listView);
managersList.setAdapter(adapter);
return view;
}
private void listOfManagers() {
FirebaseDatabase.getInstance().getReference().child("users").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String value = (String) dataSnapshot.child("userType").getValue();
if (value.equals("manager")) {
String username = (String) dataSnapshot.child("username").getValue();
managers.add(username);
adapter.notifyDataSetChanged();
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我想在包含从 firebase 下载的数据的片段中显示列表视图。
【问题讨论】:
-
你检查条件
if (value.equals("manager"))实际上是true吗?因为 ListView 和 Adapter 看起来不错。 -
你的
onChildAdded有没有被打过电话?例如:如果您在该方法内的第一行放置一个断点,并在调试器中运行它,该断点是否会被命中? -
还要提到现在我已经更新了我的代码以使用 recyclerview 而不是 listview 但它仍然无法正常工作?
-
既然你评论了我的回答,你的
onChildAdded被调用了,让我们在这里继续调试。下一步是在onChildAdded中放置一个断点并单步执行代码。断点是否被击中?之后再进一步,它会进入if语句吗?它是否得到正确的username? Stack Overflow 是一种非常低效的交互式调试器,因此最好自己一次性完成其中的许多步骤。 -
我不明白,即使我注释掉了 firebase 方法,只是尝试用硬编码值创建一个简单的数组列表,然后列表也不会显示
标签: java android firebase listview firebase-realtime-database