私のデータベースから状態リストを取得します。リストをJSON形式で取得します。
すべての州をArrayList<String>
に追加します。
今、アダプタを使用してAlertDialogに状態の完全なリストを表示したいとします。AlertDialogにArrayListを表示
しかし、私は、アダプタにArrayListを設定し、そのアダプタをbuilder.setAdapter();
で使用すると、私のArrayListの最後の項目を表示します。すなわち、完全なArrayListのうちの1つの値だけである。
どうすればよいですか?以下
私のコードは
JSONObject jsonObject = new JSONObject(response.body().string());
Log.d("JSON", String.valueOf(jsonObject));
JSONArray jsonArray = jsonObject.getJSONArray("states");
for(int i=0; i<jsonArray.length(); i++) {
stateList = new ArrayList<String>();
JSONObject jobjstate = jsonArray.getJSONObject(i);
states = jobjstate.getString("state_name");
stateList.add(states);
stateAdapter = new ArrayAdapter<String>(UserRegister.this, android.R.layout.simple_spinner_dropdown_item, stateList);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(UserRegister.this);
View customTitle = View.inflate(getApplicationContext(), R.layout.custom_dialog_state, null);
builder.setCustomTitle(customTitle);
builder.setAdapter(stateAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
etregstate.setTextColor(getResources().getColor(R.color.black));
etregstate.setText(stateList.get(which));
dialog.dismiss();
}
});
AlertDialog alertDialog = builder.create();
ListView listView = alertDialog.getListView();
listView.setDivider(new ColorDrawable(getResources().getColor(R.color.purple)));
listView.setDividerHeight(2);
alertDialog.show();
}
});
あなたの問題は、forループで毎回1つのアイテムの新しいアダプタを作成することです...これはAndroidの問題ではありません –