Как по нажатию элемента recycler view открыть fragment?

197
12 ноября 2018, 01:00

У меня в activity есть фрагмент с recycler view (вертикальный список). Как сделать так, чтобы по нажатию любого элемента в этом списке открывался другой фрагмент? Вот код адаптера recycler view.

public class MessagesAdapter extends RecyclerView.Adapter<MessagesAdapter.ViewHolder> {
private MessagesFragment mContext;
private ArrayList<MessagesObject> MessagesArrayList;
public class ViewHolder extends RecyclerView.ViewHolder {
    public TextView name, description, timestamp, count;
    public ImageView avator;
    public ViewHolder(View view) {
        super(view);
        avator = (ImageView)itemView.findViewById(R.id.item_chat_avatar);
        name = (TextView) itemView.findViewById(R.id.dialog_title);
        description = (TextView) itemView.findViewById(R.id.dialog_message);
        timestamp = (TextView) itemView.findViewById(R.id.item_chat_date);
        count = (TextView) itemView.findViewById(R.id.item_chat_unread_count);
    }
}

public MessagesAdapter(MessagesFragment mContext, ArrayList<MessagesObject> MessagesArrayList) {
    this.mContext = mContext;
    this.MessagesArrayList = MessagesArrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_messege, parent, false);
    itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        }
    });
    return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    MessagesObject songs = MessagesArrayList.get(position);
    Glide.with(mContext).load(R.drawable.a_avator).into(holder.avator);
    holder.name.setText(songs.getMessagesName());
    holder.description.setText(songs.getMessagesDescription());
    holder.timestamp.setText(songs.getMessagesTime());
    holder.count.setText(songs.getMessagesUnread());
}
@Override
public int getItemCount() {
    return MessagesArrayList.size();
}
}
Answer 1

Делаешь интерфейс который будет ловить клик на итем в твоем списке и передавать в активити и уже в активити взависимости какой итем выбрал через swich запускаешь нужный фрагмент

Answer 2

Требуется добавить OnClickListener для ViewHolder, который будет делать что-то в таком плане:

@Override
public void onClick(View view){
     AppCompatActivity activity = (AppCompatActivity) view.getContext();
     Fragment myFragment = new MyFragment();
     activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
}
READ ALSO
regex по букве и цифре

regex по букве и цифре

Есть разные строки но надо определить именно L1H3708 и L1H2708Необходимо определять c помощью rejex есть ли L на первом месте и 3 или 2 на пятом

153
Не могу прочитать List&lt;объект&gt;

Не могу прочитать List<объект>

Имеется JSON запрос который я получаю со стороны сервера

280
Java - new NewThread()

Java - new NewThread()

В одной из книг даются примеры и мне не совсем понятно использование кодового слова "new"

336
Android Выполнять Действие Каждый день

Android Выполнять Действие Каждый день

Всем приветЕсть приложения

163