Spinners 在 Android 片段中加载视图需要更多时间
Spinners takes more time to load a view In Android fragment
我在一个片段 class 中使用了超过 5 个微调器,所有微调器都是从字符串数组列表加载的,当我从另一个片段调用这个片段时加载一个视图需要两到三秒,这仅当我使用静态数据(预定义字符串数组)时才会发生这里我添加了我的代码,我在 OnViewCreated
方法
中设置所有适配器
// Create an ArrayAdapter using a simple spinner layout and cities array
adapterCity = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and states array
adapterState = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and countries array
adapterCountry = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and heightFt array
adapterHeightFt = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and Height in Inch array
adapterHeightIn = new SpinnerViewAdapter(c);
sCity.setAdapter(adapterCity);
sCountry.setAdapter(adapterCountry);
sState.setAdapter(adapterState);
sHeight1.setAdapter(adapterHeightFt);
sHeight2.setAdapter(adapterHeightIn);
adapterCity.addAll(Arrays.asList(ListCity));
adapterCountry.addAll(Arrays.asList(ListCountry));
adapterState.addAll(Arrays.asList(ListState));
adapterHeightFt.addAll(Arrays.asList(ListHeightFt));
adapterHeightIn.addAll(Arrays.asList(ListHeightIn));
我尝试使用线程进行添加,我也尝试通过后台任务将项目列表添加到微调器中,但对我来说没有任何效果,有人建议我更好的选择来避免加载时间吗?
我将我的静态字符串数组项移动到 string.xml
,我还尝试将 onPostexecute
中的所有微调项添加到 AsyncTask
现在视图像其他片段一样正常加载,在这里我添加了我的工作代码。
@SuppressLint("StaticFieldLeak")
private class BackgroundTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... urls) {
return null;
}
@Override
protected void onPostExecute(Void result) {
adapterCity.addAll(ListCity);
adapterCountry.addAll(ListCountry);
adapterState.addAll(ListState);
adapterHeightFt.addAll(ListHeightFt);
adapterHeightIn.addAll(ListHeightIn);
}
}
如果微调器列表是静态的而不是移动 string.xml
布局文件中的所有列表,它将起作用
我在一个片段 class 中使用了超过 5 个微调器,所有微调器都是从字符串数组列表加载的,当我从另一个片段调用这个片段时加载一个视图需要两到三秒,这仅当我使用静态数据(预定义字符串数组)时才会发生这里我添加了我的代码,我在 OnViewCreated
方法
// Create an ArrayAdapter using a simple spinner layout and cities array
adapterCity = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and states array
adapterState = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and countries array
adapterCountry = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and heightFt array
adapterHeightFt = new SpinnerViewAdapter(c);
// Create an ArrayAdapter using a simple spinner layout and Height in Inch array
adapterHeightIn = new SpinnerViewAdapter(c);
sCity.setAdapter(adapterCity);
sCountry.setAdapter(adapterCountry);
sState.setAdapter(adapterState);
sHeight1.setAdapter(adapterHeightFt);
sHeight2.setAdapter(adapterHeightIn);
adapterCity.addAll(Arrays.asList(ListCity));
adapterCountry.addAll(Arrays.asList(ListCountry));
adapterState.addAll(Arrays.asList(ListState));
adapterHeightFt.addAll(Arrays.asList(ListHeightFt));
adapterHeightIn.addAll(Arrays.asList(ListHeightIn));
我尝试使用线程进行添加,我也尝试通过后台任务将项目列表添加到微调器中,但对我来说没有任何效果,有人建议我更好的选择来避免加载时间吗?
我将我的静态字符串数组项移动到 string.xml
,我还尝试将 onPostexecute
中的所有微调项添加到 AsyncTask
现在视图像其他片段一样正常加载,在这里我添加了我的工作代码。
@SuppressLint("StaticFieldLeak")
private class BackgroundTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... urls) {
return null;
}
@Override
protected void onPostExecute(Void result) {
adapterCity.addAll(ListCity);
adapterCountry.addAll(ListCountry);
adapterState.addAll(ListState);
adapterHeightFt.addAll(ListHeightFt);
adapterHeightIn.addAll(ListHeightIn);
}
}
如果微调器列表是静态的而不是移动 string.xml
布局文件中的所有列表,它将起作用