Nadal próbuję się rozejrzeć po recyklingu. Mam arraylistę, którego używam do zainicjowania widoku recyklera.
Jak mogę dodać nowe elementy do posta widoku recyklera, ustawiając adapter i menedżer układu?
private void initData() {
mItems = new ArrayList<String>();
for (int i = 0; i < ITEMS_COUNT; i++) {
mItems.add("Item " + (i + 1));
}
}
private void initRecyclerView() {
mRecentRecyclerView = (RecyclerView) findViewById(R.id.recentrecyclerView);
mRecentRecyclerView.setHasFixedSize(true);
mRecentLayoutManager = new LinearLayoutManager(this);
mRecentRecyclerView.setLayoutManager(mRecentLayoutManager);
mAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.notice_snippet
, viewGroup, false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
viewHolder.noticeSubject.setText(mItems.get(i));
}
@Override
public int getItemCount() {
return mItems.size();
}
};
mRecentRecyclerView.setAdapter(mAdapter);
private class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView noticeSubject;
public CustomViewHolder(View itemView) {
super(itemView);
noticeSubject = (TextView) itemView.findViewById(R.id.notice_subject);
}
}
Więc w zasadzie po I initdata()
i initRecyclerView()
jak dodać nowy element do RecyclerView?
android
add
android-recyclerview
items
Shubham Kanodia
źródło
źródło
Odpowiedzi:
Najpierw dodaj swój przedmiot do,
mItems
a następnie użyj:ta metoda jest lepsza niż użycie:
w wydajności.
źródło
po prostu dodaj do struktury danych (mItems), a następnie powiadom adapter o zmianie zestawu danych
źródło
ArrayList<T>
Musiałbyś użyć typu obiektu, który chcesz dodać, np.ArrayList<ViewGroup>
ZamiastArrayList<String>
. Następnie możesz po prostu zmienić typ argumentu zString
naViewGroup
. (Przepraszam za necro).jeśli dodajesz wiele pozycji do listy, użyj tego:
Powoduje to powiadomienie zarejestrowanych obserwatorów, że aktualnie odzwierciedlone pozycje itemCount zaczynające się od pozycji positionStart zostały nowo wstawione. Element znajdujący się wcześniej w pozycji positionStart i poza nią można teraz znaleźć, zaczynając od pozycji positinStart + itemCount
istniejący element w zbiorze danych jest nadal uważany za aktualny.
źródło