實際上,您只需要初始化並將適配器添加到微調器中。然後加載數據,將數據添加到適配器並調用adapter.notifyDataSetChanged();
這裏是我的測試活動,您可以直接複製粘貼到你的活動
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(linearLayout);
Spinner spinner = new Spinner(this);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, new ArrayList<String>());
spinner.setAdapter(adapter);
Button button = new Button(this);
button.setText("load data");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TestActivity.this.getWindow().getDecorView().getHandler().postDelayed(new Runnable() {
@Override
public void run() {
loadData();
}
}, 2000);
}
});
linearLayout.addView(spinner);
linearLayout.addView(button);
}
private void loadData() {
String jsonArray = "[\n" +
" {\n" +
" \"id\": \"1\",\n" +
" \"name\": \"dada1\"\n" +
" },\n" +
" {\n" +
" \"id\": \"2\",\n" +
" \"name\": \"dada2\"\n" +
" },\n" +
" {\n" +
" \"id\": \"3\",\n" +
" \"name\": \"dada3\"\n" +
" },\n" +
" {\n" +
" \"id\": \"4\",\n" +
" \"name\": \"dada4\"\n" +
" },\n" +
" \n" +
"]";
try {
getItems(new JSONArray(jsonArray));
} catch (JSONException e) {
e.printStackTrace();
}
}
private ArrayAdapter<String> adapter;
private void getItems(JSONArray j) {
ArrayList<String> items = new ArrayList<>();
for (int i = 0; i < j.length(); i++) {
try {
//Getting json object
JSONObject json = j.getJSONObject(i);
//Adding the name of the student to array list
items.add(json.getString("name"));
} catch (JSONException e) {
e.printStackTrace();
}
}
adapter.addAll(items);
adapter.notifyDataSetChanged();
}
如何檢驗呢?
- 運行活動
- 按
- 2秒鐘後,您的項目產生
- 再次按下按鈕,該按鈕並按下微調立即
- 您將看到的項目是不收加2秒後彈出
你能提供你的json數組字符串嗎? – HendraWD
您正在重置適配器。我不認爲你可以保持下拉菜單打開 –
只需添加spinner.performClick();在上面的代碼中設置適配器,如果它拋出錯誤,那麼你需要在主線程內寫入相同的行 – Vickyexpert