gpt4 book ai didi

java - 在 Firebase valueEventListener 中获取上下文

转载 作者:行者123 更新时间:2023-12-02 12:36:56 25 4
gpt4 key购买 nike

我正在尝试从 Firebase 获取字符串列表,只有在检索到所有数据后,我才会更新我的 UI。目前我在 fragment 类中使用以下代码来实现此目的。

taskList = new ArrayList<>();

mDatabase.child("users").child(mUserId).child("items").orderByChild("id").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot childSnapshot : dataSnapshot.getChildren() ){
taskList.add(new Pair<>((long) childSnapshot.child("id").getValue(),(String) childSnapshot.child("title").getValue()));
}
//update UI
setupListRecyclerView();
}

@Override
public void onCancelled(DatabaseError firebaseError){
throw firebaseError.toException();
}
});

如果将 setupListRecyclerView 放置在 valueEventListener 之外,则它可以工作,但如果放置在其中,我会得到 “尝试调用虚拟方法 'java.lang.Object android.content.Context.getSystemService(java.lang.String)'空对象引用” 错误。但是,如果我将它放在监听器之外,它会在检索 Firebase 中的数据之前更新 UI,所以我在这里迷失了方向。

这是 setupListRecyclerView 的样子:

private void setupListRecyclerView() {
mDragListView.setLayoutManager(new LinearLayoutManager(getContext()));
ItemAdapter listAdapter = new ItemAdapter(taskList, R.layout.list_item, R.id.image, false);
mDragListView.setAdapter(listAdapter, true);
mDragListView.setCanDragHorizontally(false);
mDragListView.setCustomDragItem(new MyDragItem(getContext(), R.layout.list_item));
}

private static class MyDragItem extends DragItem {

MyDragItem(Context context, int layoutId) {
super(context, layoutId);
}

@Override
public void onBindDragView(View clickedView, View dragView) {
CharSequence text = ((TextView) clickedView.findViewById(R.id.text)).getText();
((TextView) dragView.findViewById(R.id.text)).setText(text);
dragView.findViewById(R.id.item_layout).setBackgroundColor(dragView.getResources().getColor(R.color.list_item_background));
}
}

最佳答案

如果将其放在外部,则将 ItemAdapter listAdapter 声明为全局变量,并将 listAdapter.notifyDataSetChanged() 添加到 onDataChange() 方法,或者如果您放入里面试试

mDragListView.setLayoutManager(new LinearLayoutManager(getActivity()));

关于java - 在 Firebase valueEventListener 中获取上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45116387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com