我有一个带有微调器的片段,但是当我选择显示该片段的选项卡时,它不会更新它包含的微调器。所以我假设它的onResume不会触发?
无论何时选择片段,我都试图更新微调器。
片段代码:
public class AddFacultyFragment extends Fragment {
@BindView(R.id.spinner_search_UniFac)
Spinner spinner_search_UniFac;
ArrayList<University> listUni = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_faculty,
container,
false);
ButterKnife.bind(this, view);
updateSpinner();
return view;
}
@Override
public void onResume() {
updateSpinner();
super.onResume();
}
private void updateSpinner() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
final CollectionReference[] colRef = {db.collection("university")};
colRef[0].get().addOnCompleteListener((OnCompleteListener<QuerySnapshot>) task -> {
if (task.isSuccessful()) {
listUni.clear();
for(DocumentSnapshot a : task.getResult()){
University u = new University();
u.setID(a.getId());
u.setDesc(a.get("Desc").toString());
listUni.add(u);
}
}
});
ArrayAdapter<University> spinnerArrayAdapter = new ArrayAdapter<>
(getContext(), android.R.layout.simple_spinner_item,
listUni);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
spinner_search_UniFac.setAdapter(spinnerArrayAdapter);
}
public AddFacultyFragment() {
// Required empty public constructor
}
}
也许值得一提的是,该片段与更新微调器从中提取的Firestore集合相邻。
答案 0 :(得分:0)
尝试将将适配器分配给微调器的代码从updateSpinner方法中移出,以便仅使用适配器初始化微调器1次。在您的课程中保留对适配器的引用-例如mSpinnerArrayAdapter
然后,在updateSpinner方法中,一旦更新了适配器的数据,请确保在适配器上调用mSpinnerArrayAdapter.notifyDataSetChanged()。