gpt4 book ai didi

android - 通过查询填充微调器

转载 作者:行者123 更新时间:2023-11-29 22:59:16 25 4
gpt4 key购买 nike

我有一个有点奇怪/恼人的问题,我通过从 Firestore 查询必要的字符串元素来填充微调器下拉元素。查询部分不是问题。它是填充部分。微调器(实际上是 MaterialBetterSpinner)在 fragment 中。而且我必须等待一两秒钟才能打开微调器。如果我不这样做,那么微调器将无法工作。我尝试将查询移动到 onCreate,然后移动到 fragment 的 onStart 覆盖,但无济于事。在不破坏用户体验的情况下,我有什么选择可以使用处理程序禁用微调器几秒钟?

方法如下:

@Override
public void onStart() {
super.onStart();
FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
Query myRestaurants = firebaseFirestore.collection("Restaurant_Data").whereArrayContains("users", getUser());
myRestaurants.get().addOnSuccessListener(queryDocumentSnapshots -> {
for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
Restaurant restaurant = documentSnapshot.toObject(Restaurant.class);
spinnerList.add(restaurant.getRestaurantAddress());
restaurantArrayList.add(restaurant);
}
}).addOnFailureListener(e -> {
Log.d(TAG, "Exception for spinner: " + e.getMessage());
});
}

此方法是从 fragment 中的 onCreateView 调用的:

private void getRestaurants() {
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(restaurantContext, android.R.layout.simple_dropdown_item_1line, spinnerList);
materialDesignSpinner = restaurantView.findViewById(R.id.restaurant_spinner);
materialDesignSpinner.setAdapter(arrayAdapter);
}

最佳答案

您正在进行异步调用以获取“Restaurant_Data”。因此,微调器仅在获取数据后才会填充。

您可以尝试通过禁用微调器来克服这个问题(如您所建议的),直到成功检索数据。另一种解决方法是预取数据(如果您确定要打开此 Activity )。例如,您可以预取前面 Activity 中的数据并将其存储在静态变量中。

关于android - 通过查询填充微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57119451/

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