Так у меня есть кусок кода, который похож на этотArrayAdapter не обновляет вид, когда notifyDataSetChanged() называется
floorList = new ArrayList<String>();
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, floorList);
arrayAdapter.setNotifyOnChange(true);
floorSpinner.setAdapter(arrayAdapter);
floorList.add("a");
Call<ParkourResponse<ParkingPlaceResponseObject>> getPlaceDetailCall = Helper.getParkourService().getPlaceDetail(placeID);
getPlaceDetailCall.enqueue(new Callback<ParkourResponse<ParkingPlaceResponseObject>>() {
@Override
public void onResponse(Call<ParkourResponse<ParkingPlaceResponseObject>> call, Response<ParkourResponse<ParkingPlaceResponseObject>> response) {
ParkingPlaceResponseObject placeDetail = response.body().getRespObject();
Floor[] floorArray = placeDetail.getFloor();
floorList.clear();
arrayAdapter.notifyDataSetChanged();
for(int i = 0; i < floorArray.length; i++){
floorList.add(Integer.toString(floorArray[i].getNumber()));
}
}
@Override
public void onFailure(Call<ParkourResponse<ParkingPlaceResponseObject>> call, Throwable t) {
}
});
Так что, когда я попытался добавить «а», которая не является частью службы Retrofit, счетчик обновлен.
Но все, что я делаю для floorList внутри onResponse(), не обновляет адаптер и счетчик. Я попытался очистить его от onResponse(), а затем вызвать notifyDataSetChanged(), даже если он не удаляет опцию «a» из счетчика.
Кто-нибудь знает, как это исправить?
хорошо 'notifyDataSetChanged' shoudl быть obviosuly окликнул изменения сделаны ... также ** вы не должны ** передавать при изменении 'ArrayList', который вы передаете' ArrayAdapter' ... вы должны напрямую использовать методы ArrayAdapter для удаления/добавления элементов – Selvin
это не потому, что вы вносите изменения в вашем полном списке внутри вашего onResponse. Вы должны обновить список, который используется классом адаптера. Лучше сделать способ в своем адаптере и передать этот список и вызвать notifyDataSetChanged. – Gautam
Я назвал его, но floorList все еще не обновляется, не говоря уже о 'add' внутри' onResponse() ', даже' floorList.clear() 'не очищает массив FloorList @Selvin – Jegul