как мы можем передать данные на выбранный itemView в recylerView - PullRequest
0 голосов
/ 15 апреля 2019

Я хотел передать выбранный текст ItemView (который здесь является представлением класса) следующему действию, чтобы я мог сохранить другие файлы с этим именем. Как я могу это сделать, я пытался использовать намерение, но это всегда дает мне нулевое исключение. Вот мой адаптер для утилизатора. Я добавил набор для прослушивания щелчков при просмотре элемента, но хочу передать имя с помощью добавленных дополнений



public class ClassRecyclerAdapter extends RecyclerView.Adapter<ClassRecyclerAdapter.ViewHolder> {

    public List<ClassPost> class_list;
    public Context context;



    public ClassRecyclerAdapter(List<ClassPost> class_list){

        this.class_list = class_list;

    }


    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.class_list_items, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        final String class_name_data = class_list.get(position).getClass_name();
        holder.setClassText(class_name_data);



        String class_session_data = class_list.get(position).getClass_session();
        holder.setClassSession(class_session_data);

    }

    @Override
    public int getItemCount() {
        return class_list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{

        public View view;

        public TextView classView , sessionView;


        public ViewHolder(final View itemView) {
            super(itemView);

            view = itemView;


            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(view.getContext(), "Welcome to the Class"  , Toast.LENGTH_SHORT).show();
                    Intent newintent = new Intent(view.getContext(), ClassActivity.class);

                    view.getContext().startActivity(newintent);


                }
            });





        }

        public void setClassText(String class_text){

            classView = view.findViewById(R.id.class_name);
            classView.setText(class_text);


        }

        public  void setClassSession (String class_session_text){

            sessionView = view.findViewById(R.id.class_session);
            sessionView.setText(class_session_text);
        }
    }

}

1 Ответ

0 голосов
/ 15 апреля 2019

Я не уверен, что происходит, но попробуйте это:

  public class ViewHolder extends RecyclerView.ViewHolder{

    public View view;

    public TextView classView , sessionView;


    public ViewHolder(final View itemView) {
        super(itemView);

        view = itemView;
        classView = view.findViewById(R.id.class_name);
        sessionView = view.findViewById(R.id.class_session);
 }

А для вас на BindViewHolder

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {



    final String class_name_data = class_list.get(position).getClass_name();
    ((ViewHolder) holder).classView.setText(class_name_data);



    String class_session_data = class_list.get(position).getClass_session();
    ((ViewHolder) holder).sessionView.setText(class_session_data);

//Listener for the holder
     holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

     Toast.makeText(context, "Welcome to the Class"  , 
     Toast.LENGTH_SHORT).show();
     Intent newintent = new Intent(context, 
          ClassActivity.class);

     context.startActivity(newintent);

        }
    });
}

Дайте мне знать, если это работает, но это должно

...