如果您想要自定义Spinner的数据加载器,您可以通过扩展AsyncTask类来实现。以下是一个简单的示例,演示如何使用AsyncTask来加载数据并将其设置到Spinner中:
public class CustomLoader extends AsyncTask<Void, Void, List<String>> {
private Context mContext;
private Spinner mSpinner;
private ProgressDialog mProgressDialog;
public CustomLoader(Context context, Spinner spinner) {
mContext = context;
mSpinner = spinner;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setMessage("Loading data...");
mProgressDialog.show();
}
@Override
protected List<String> doInBackground(Void... voids) {
// Simulate loading data from a data source (e.g. network request, database query)
List<String> dataList = new ArrayList<>();
dataList.add("Item 1");
dataList.add("Item 2");
dataList.add("Item 3");
// Simulate a delay for demonstration purposes
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return dataList;
}
@Override
protected void onPostExecute(List<String> dataList) {
super.onPostExecute(dataList);
mProgressDialog.dismiss();
ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, android.R.layout.simple_spinner_item, dataList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(adapter);
}
}
您可以在Activity或Fragment中调用CustomLoader来加载数据并设置到Spinner中:
Spinner spinner = findViewById(R.id.spinner);
CustomLoader customLoader = new CustomLoader(this, spinner);
customLoader.execute();
请注意,上述示例仅是一个简单的演示,实际情况中您可能需要根据您的需求进行定制和扩展。您还可以添加错误处理、数据缓存、数据过滤等功能来优化您的自定义加载器。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。