development

프로그래밍 방식으로 recyclerview에 새 항목을 추가 하시겠습니까?

big-blog 2020. 8. 15. 09:50
반응형

프로그래밍 방식으로 recyclerview에 새 항목을 추가 하시겠습니까?


나는 여전히 recyclerview에 대해 머리를 돌리려고 노력하고 있습니다. 리사이클 러 뷰를 초기화하는 데 사용하는 arraylist가 있습니다.

어댑터 및 레이아웃 관리자를 설정하는 리사이클 러 뷰 포스트에 새 항목을 추가하려면 어떻게해야합니까?

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);
        }
    }

그래서 기본적으로 I 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);

This notify any registered observers that the currently reflected itemCount items starting at positionStart have been newly inserted. The item previously located at positionStart and beyond can now be found starting at position positinStart+itemCount

existing item in the dataset still considered up to date.

참고URL : https://stackoverflow.com/questions/27845069/add-a-new-item-to-recyclerview-programmatically

반응형