我正在尝试用数据填充数组列表,但是方法完成后它会被清空
我应该将物品放入recyclerview中,但是如果我的数组列表不能显示要显示的数据,因为在完成该方法后将其清空 但是,当手机背光灯熄灭并重新打开时,这些项目会显示出来
如果我
Log.d("TAG",mScheduleNames.get(0));
在on complete方法中,我得到输出
但是,如果我在firebase用户之前输出它,则会得到一个空点异常,该异常将在方法之后运行... arraystring中的数据似乎已清空
public class Schedules extends Fragment {
private static final String TAG = "AddingEvents";
private ArrayList<String> mScheduleNames = new ArrayList<>();
private ArrayList<String> mScheduleImageUrls = new ArrayList<>();
private FirebaseAuth mAuth;
private int i;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mAuth = FirebaseAuth.getInstance();
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_schedules, container, false);
}
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState){
super.onViewCreated(view, savedInstanceState);
final FirebaseUser currentUser = mAuth.getCurrentUser();
final FirebaseFirestore db = FirebaseFirestore.getInstance();
i = 0;
db.collection("Schedules")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.get("Owner").toString().equals(currentUser.getUid())){
mScheduleNames.add(document.get("Schedule").toString());
mScheduleImageUrls.add("https://www.crockerriverside.org/sites/main/files/imagecache/square/main-images/camera_lense_0.jpeg");
i++;
Log.d(TAG, document.getId() + " => " + document.getData());
}
}
if(i == 0){
Toast.makeText(getContext(), "You do not have any existing schedules. \r\n " +
"Click on add schedule at the bottom", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getContext(), "About to display your schedules ...", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getContext(), "Error getting your schedules.", Toast.LENGTH_SHORT).show();
Log.w(TAG, "Error getting your schedules.", task.getException());
}
}
});
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerviews);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this.getContext(), mScheduleNames, mScheduleImageUrls);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this.getContext()));
/*
mScheduleNames.add("Steve");
mScheduleImageUrls.add("https://cdn.arstechnica.net/wp-content/uploads/2016/02/5718897981_10faa45ac3_b-640x624.jpg");
mScheduleNames.add("Bella");
mScheduleImageUrls.add("https://www.crockerriverside.org/sites/main/files/imagecache/square/main-images/camera_lense_0.jpeg");
mScheduleNames.add("Carre");
mScheduleImageUrls.add("https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Ultraviolet_image_of_the_Cygnus_Loop_Nebula_crop.jpg/691px-Ultraviolet_image_of_the_Cygnus_Loop_Nebula_crop.jpg");
*/
}
}
我希望数据将显示在“回收者”视图中。
答案 0 :(得分:0)
谢谢Ben P 这行得通
db.collection("Schedules")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.get("Owner").toString().equals(currentUser.getUid())){
mScheduleNames.add(document.get("Schedule").toString());
mScheduleImageUrls.add("https://www.crockerriverside.org/sites/main/files/imagecache/square/main-images/camera_lense_0.jpeg");
i++;
Log.d(TAG, document.getId() + " => " + document.getData());
}
}
if(i == 0){
Toast.makeText(getContext(), "You do not have any existing schedules. \r\n " +
"Click on add schedule at the bottom", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getContext(), "About to display your schedules ...", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getContext(), "Error getting your schedules.", Toast.LENGTH_SHORT).show();
Log.w(TAG, "Error getting your schedules.", task.getException());
}
adapter.notifyDataSetChanged();
}
});