gpt4 book ai didi

Android:微调器显示来自网络服务的内容

转载 作者:行者123 更新时间:2023-11-30 04:09:52 24 4
gpt4 key购买 nike

我想做这样的事情:

主要目标是显示从某些网络服务加载的微调器内容。

用户点击微调器 - 适配器应显示一些文本,如“正在加载...”。当它最终被加载时——它应该用加载的内容替换微调器中的现有适配器。

我做了什么:我为它制作了一个spinneronTouchListener。在 Listener 中,我启动了 asyncTask,它从网络服务下载数据。在 asyncTaskonPostExecute 中,我正在尝试替换微调器适配器并执行 spinner.performClick()。但实际上,用户同时看到 2 个适配器 - 初始一个(“正在加载...”)和新的,由 spinner.performClick() 显示。

关于如何完成初始任务或如何只显示一个适配器有更好的想法吗?

这是我使用的一些代码:

private class CountryRegionCity extends AsyncTask<String, Void, JSONArray> {
protected JSONArray doInBackground(String... params) {
// Getting contents from web service
{...}
return someJSONArray;
}

protected void onPostExecute (JSONArray jsonArray) {

ArrayList<String> countryNames = new ArrayList<String>();
//Filling here countryNames based on jsonArray
{...}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, countryNames);

mCountrySpinner.setAdapter(adapter);
mCountrySpinner.performClick();
}
}

public View onCreateDialogView() {

ArrayAdapter<String> countryArrayAdapter=new ArrayAdapter<String> (context(), android.R.layout.simple_spinner_item, new String[] {"Loading..."});
mCountrySpinner.setAdapter(countryArrayAdapter);

mCountrySpinner.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
CountryRegionCity getCountries = new CountryRegionCity();
getCountries.execute("countries");
return false;
}
});
}

最佳答案

我想您可以使用 Spinner 控件的 notifyDataSetChanged() 方法来显示适配器数据的变化。

关于Android:微调器显示来自网络服务的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020191/

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