所以我有一段代码看起来像这样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) {
}
});
所以,当我尝试添加“一个”不属于改造服务的一部分,微调器被更新。
但是我对onResponse()中的floorList所做的一切都没有更新适配器和微调器。 我尝试在onResponse()上清除它,然后调用notifyDataSetChanged(),即使这样也不会从微调控件中删除“a”选项。
任何人都知道如何解决这个问题?
以及'notifyDataSetChanged' shoudl被称为obviosuly后改变......也**你不应该**继续改变'ArrayList'你传递给'ArrayAdapter' ...你应该直接使用ArrayAdapter的方法来删除/添加项目 – Selvin
它不会因为你正在进行更改在你的onResponse里的你的floorlist中。您必须更新适配器类正在使用的列表。最好在适配器中创建一个方法并传递该列表并调用notifyDataSetChanged。 – Gautam
好吧,我打电话给它,但floorList仍然没有更新,更不用说'onResponse()'里面的'add',即使'floorList.clear()'也不清除floorList数组@Selvin – Jegul