在啓動應用程序時,我想用來自數據庫的數據在片段中填充微調器。我從數據庫中拉出一個字符串列表,並希望將其顯示在微調器中。我已經得到了列表來填充,我相信ArrayExapter在PostExecute中被更改,但是什麼時候什麼都沒有顯示。使用來自Async任務的數據更新微調器
片段代碼
public static class RegisterFragment extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
List<String> instituteList = new ArrayList<String>();
View rootView = inflater.inflate(R.layout.fragment_register, container, false);
if (instituteList.isEmpty()){ //list is null on app start-up
Log.d("test","null list");
}else{
Spinner autoInstitute = (Spinner)getActivity(). findViewById(R.id.institute);
// Get the string array
String[] institutes = (String[]) instituteList.toArray(new String[instituteList.size()]);;
// Create the adapter and set it to the AutoCompleteTextView
ArrayAdapter<String> instituteApapdter =
new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, institutes);
instituteApapdter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
autoInstitute.setAdapter(instituteApapdter);
}
return rootView;
}
異步類
class getInstitute extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Login.this);
pDialog.setMessage("Loading Institute List");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
//Get data and store in List
}
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
institutes_array = (String[]) instituteList.toArray(new String[instituteList.size()]);;
final ArrayAdapter<String> instituteApapdter =
new ArrayAdapter<String>(Login.this, android.R.layout.simple_list_item_1, institutes_array);
instituteApapdter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
runOnUiThread(new Runnable() {
public void run() {
instituteApapdter.notifyDataSetChanged();
}
//autoInstitute.setAdapter(instituteApapdter); // causes nullpointerexception
});
}
請澄清你的問題有點多。 – Yuriy
所以你正在'doInBackground'中更新'instituteList'? –
耶instituteList在doInBackground – bobeyuno