Задать вопрос
Innerbloom
@Innerbloom

Как сделать переход с RecyclerView.Adapter на фрагмент?

Люди помогите пожалуйста столкнулся с проблемой. Как сделать переход с RecyclerView.Adapter на фрагмент.
Вот собственно сам код адаптера:
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> { 

public static class PersonViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

CardView cv; 
TextView personName; 
TextView personAge; 
ImageView personPhoto; 


PersonViewHolder(View itemView) { 
super(itemView); 
cv = (CardView)itemView.findViewById(R.id.cv); 
personName = (TextView)itemView.findViewById(R.id.person_name); 
personAge = (TextView)itemView.findViewById(R.id.person_age); 
personPhoto = (ImageView)itemView.findViewById(R.id.person_photo); 

itemView.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
switch (getAdapterPosition()){ 
case 0: 
} 
} 
} 

List<Person> persons; 

public RVAdapter(List<Person> persons){ 
this.persons = persons; 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
super.onAttachedToRecyclerView(recyclerView); 
} 

@Override 
public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false); 
PersonViewHolder personViewHolder = new PersonViewHolder(view); 
return personViewHolder; 
} 

@Override 
public void onBindViewHolder(PersonViewHolder personViewHolder, int i) { 
personViewHolder.personName.setText(persons.get(i).name); 
personViewHolder.personAge.setText(persons.get(i).age); 
personViewHolder.personPhoto.setImageResource(persons.get(i).photoId); 
} 

@Override 
public int getItemCount() { 
return persons.size(); 
} 
}
  • Вопрос задан
  • 1596 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
В адаптере сделать интерфейс OnItemClickListener (*/передать полезные данные */), это свой интерфейс, не встроенный. Когда адаптер создаётся, передавать ему этот интерфейс и пусть адаптер дергает метод. Снаружи сделать переход куда угодно - в том числе на фрагмент.
Ответ написан
Комментировать
Innerbloom
@Innerbloom Автор вопроса
Вот так вот :
public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {

    public static class PersonViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        CardView cv;
        TextView personName;
        TextView personAge;
        ImageView personPhoto;
        OnItemClickListener cvClickListener;

        public interface OnItemClickListener{
            void onItemClicked(int position);
        }


        PersonViewHolder(View itemView, OnItemClickListener clickListener) {
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            personName = (TextView)itemView.findViewById(R.id.person_name);
            personAge = (TextView)itemView.findViewById(R.id.person_age);
            personPhoto = (ImageView)itemView.findViewById(R.id.person_photo);

            cvClickListener = clickListener;

            itemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View view) {
            cvClickListener.onItemClicked(getAdapterPosition());
            А вот что сюда писать помогите ? Как реализовать переход на фрагмент re_fragment

            }
        }

    List<Person> persons;

    public RVAdapter(List<Person> persons){
        this.persons = persons;
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
        PersonViewHolder personViewHolder = new PersonViewHolder(view);
        return personViewHolder;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
        personViewHolder.personName.setText(persons.get(i).name);
        personViewHolder.personAge.setText(persons.get(i).age);
        personViewHolder.personPhoto.setImageResource(persons.get(i).photoId);


    }

    @Override
    public int getItemCount() {
        return persons.size();
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы