【发布时间】:2018-04-14 12:04:59
【问题描述】:
我有一个 onCreate 方法,在该方法中我创建一个带有空字符串数组的 ArrayAdapter,之后我调用一个 AsyncTask 返回一个字符串数组,我想用它来更新 ArrayAdapter,但我这样做的方式不是工作:
public class FillTransportPlaceActivity extends AppCompatActivity {
public static String[] lines = new String[13];
public static ArrayAdapter<String> arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fill_transport_place);
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, lines);
new transportDB().execute(metroText); // AsyncTask method which return me the String[] array.
MaterialBetterSpinner materialDesignSpinner = findViewById(R.id.listLines);
materialDesignSpinner.setAdapter(arrayAdapter);
}
}
在 AsyncTask 的 onPostExecute(String[] result) 方法中,我调用 updateAdapter(String[] result) 函数:
private class transportDB extends AsyncTask<String, String[], String[]> {
@Override
protected void onPreExecute() {
}
@Override
protected String[] doInBackground(String... strings) {
return DB_transportPlace.getLines(strings[0]);
}
@Override
protected void onPostExecute(String[] result) {
updateAdapter(result);
}
public static void updateAdapter(String[] result) {
for(int i = 0; i < 14; i++) {
arrayAdapter.add(result[i]);
}
//arrayAdapter.addAll(lines);
//arrayAdapter.notifyDataSetChanged();
}
如您所见,我尝试了不同的方法,例如 addAll() 和 notifyDataSetChanged(),但我不确定我是否正确使用了这些方法。
我想做的事情是用 AsyncTask 返回的数组的内容填充 MaterialDesignSpinner,如果有人知道任何其他选项,我会感谢任何建议,谢谢,任何帮助都会被感谢!
【问题讨论】:
-
究竟什么是“它不起作用”?您预计会发生什么和不会发生什么?
标签: android android-asynctask android-arrayadapter