как получить доступ к элементам в RecyclerView во фрагменте из действия - PullRequest
0 голосов
/ 05 мая 2018

У меня есть активность с TabLayout (где мои Fragments) и у myFragment есть RecyclerView.
Я хочу показать название каждого затронутого предмета в textView в myActicvity.

Это изображение, которое объясняет мою проблему.

enter image description here

Как мне это сделать? Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Вы можете использовать шину событий: https://github.com/greenrobot/EventBus. Эта библиотека поможет вам отправлять события из одного действия / фрагмента / представления в другое. Вы должны просто добавить onclicklistener для корневого элемента элемента и сделать что-то вроде этого: EventBus.getDefault().post(getItemName());. И по вашей воле добавить это:

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(String name) {
   textView.setText(name);
};

И не забудьте зарегистрировать и отменить регистрацию слушателя.

0 голосов
/ 05 мая 2018

Вы должны написать onItemCLickListener в своем адаптере recyclerView, а затем вызвать его из своей деятельности, чтобы установить текстовый просмотр текста.

Код адаптера:

 OnItemClickListener onItemClickListener;
 public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }


  public interface OnItemClickListener {
        void onClick(int position,String itemName);
    }

 @Override
 public void onBindItemViewHolder(final AdapterRecycelerView.ViewHolderRecyclerItem holder, final int position) {

        try {

            holder.linearItem.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (onItemClickListener != null)
                        onItemClickListener.onClick(position,arrayList.get(position).getName());
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Код деятельности:

 adapterRecycelerView.setOnItemClickListener(new AdapterRecycelerView.OnItemClickListener() {
                @Override
                public void onClick(int position,String itemName) {
                   textview.setText(itemName);
                }
            });
...