Подтвердить что ты не робот

Добавить программный продукт для recyclerview?

Я все еще пытаюсь найти себе отражение в recyclerview. У меня есть arraylist, который я использую для инициализации представления recycler с.

Как добавить новые элементы в сообщение просмотра ресайклера, задав адаптер и макетщик?

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?

4b9b3361

Ответ 1

Сначала добавьте свой элемент в mItems, а затем используйте:

mAdapter.notifyItemInserted(mItems.size() - 1);

чем лучше, чем при использовании:

mAdapter.notifyDataSetChanged();

в производительности.

Ответ 2

просто добавьте в свою структуру данных (mItems), а затем сообщите адаптеру об изменении набора данных

private void addItem(String item) {
  mItems.add(item);
  mAdapter.notifyDataSetChanged();
}

addItem("New Item");

Ответ 3

Если вы добавляете несколько элементов в список, используйте это:

mAdapter.notifyItemRangeInserted(startPosition, itemcount);

Это уведомит всех зарегистрированных наблюдателей о том, что недавно включенные элементы itemCount, начинающиеся с positionStart, были вновь вставлены. Элемент, ранее расположенный в позиции Start и далее, теперь можно найти, начиная с позиции positinStart + itemCount

существующий элемент в наборе данных, который по-прежнему считается актуальным.

Ответ 4

Посмотрите на этот учебник Использование RecyclerView его очень хорошее место, чтобы начать изучать recyclerview и все его возможности.

Ответ 5

this.runOnUiThread(new Runnable() {
     public void run() {
         mAdapter.notifyDataChanged()
     }
 });