私はまだリサイクル業者の意見を取り戻そうとしています。リサイクルリストの初期化に使用するアレイリストがあります。
アダプタとレイアウトマネージャを設定して、リサイクル業者のビュー投稿に新しい項目を追加する方法を教えてください。
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);
}
}
だから基本的に私はinitdata()
とinitRecyclerView()
の後に、どうやってRecyclerViewに新しいアイテムを追加するのですか?
まずあなたのアイテムをmItems
に追加してから、
mAdapter.notifyItemInserted(mItems.size() - 1);
この方法は次のものよりも優れています。
mAdapter.notifyDataSetChanged();
パフォーマンスで。
データ構造(mItems)に追加して、データセットの変更についてアダプタに通知するだけです。
private void addItem(String item) {
mItems.add(item);
mAdapter.notifyDataSetChanged();
}
addItem("New Item");
リストに複数の項目を追加している場合は、これを使用します。
mAdapter.notifyItemRangeInserted(startPosition, itemcount);
これは、positionStartから始まる現在反映されているitemCountアイテムが新しく挿入されたことを登録オブザーバに通知します。以前はpositionStart以降に位置していたアイテムが、位置positinStart + itemCountから始まるようになりました。
データセット内の既存の項目はまだ最新のものと見なされます。