사용자 지정 ArrayAdapter에 이상한 상황이 있습니다. 새 데이터로 새 데이터를 업데이트하려고하면 데이터가 업데이트되는 대신 새 데이터가 목록보기의 시작 부분에 삽입되고 이전 데이터는 목록보기를 스크롤하면 남아 있습니다.ArrayAdapter 문제 업데이트
UPDATE는
이 문제가 조각 번들에서 ArrayList에 의해 발생되는 것으로 보인다. 나는 조각 번들에서 onCreateView에서 목록보기를 설정하지 않으면 내 업데이트 코드는 잘 작동하지만이 왜 지금은 의아해 해요 :
ArrayList<Collection> cityStoresList = fragmentBundle.getParcelableArrayList("stores");
mStoresList.addAll(cityStoresList);
항상 목록에 남아있는 항목을 일으키는 ? UPDATE의
END
여기 코드의 일부입니다 :
ArrayList<Collection> mStoresList = new ArrayList<Collection>();
/** List Adapter */
private StoresListAdapter mListAdapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
boolean attach = false;
if (container == null) {
attach = true;
}
Bundle fragmentBundle = getArguments();
ArrayList<Collection> cityStoresList = fragmentBundle.getParcelableArrayList("stores");
mStoresList.addAll(cityStoresList);
//inflater code not added here, but is present
mListAdapter = new StoresListAdapter(getActivity(), mStoresList);
mListView.setAdapter(mListAdapter);
return layout;
}
내 사용자 정의 어댑터는 다음과 같다 (모음 사용자 정의 개체 모델 클래스입니다) :
public class StoresListAdapter extends ArrayAdapter<Collection> {
public StoresListAdapter(Context c, ArrayList<Collection> array) {
super(c, 0, array);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// View from recycle
View row = convertView;
// Handle inflation
if (row == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.row_store, null);
}
// Get the Store
Collection store = getItem(position);
//rest of code follows
return row;
}
}
이제 어댑터를 업데이트하려면 다음을 사용하십시오.
public void updateAdapter(ArrayList<Collection> storesList, final int listIndex) {
mStoresList.clear();
mStoresList.addAll(storesList);
mListAdapter.notifyDataSetChanged();
}
그리고 내가 언급 한 문제가 발생합니다. 새 항목은 잘 보이지만 이전 항목은 새 항목 이후에도 계속 표시되고 추가됩니다. ArrayList에있는 새 항목을 첫 번째 항목으로 추가하는 것과 비슷합니다. 이전 항목을 대체하는 것이 아닙니다.
의견이 있으십니까?
및 addAll은 예 ... – njzk2
아무것도 제거하지 않습니다,하지만 난 전에 그것을 삭제하고있어, 추가 새 목록을 추가합니다. – Lefteris
어디에서 storesList를 가져 옵니까? – njzk2