首页 文章

如何将List <E>从RecyclerView适配器传递到RecyclerView Holder?

提问于
浏览
0

我一直试图找到上面问题的答案,但没有帖子似乎有帮助 . 我有一个RecyclerView适配器,我从数据库中获取List作为List:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder> {

    public List<Note> noteList;
    private View.OnLongClickListener longClickListener;
    private Context context;

    public RecyclerViewAdapter(List<Note> noteList, View.OnLongClickListener longClickListener, Context context) {
        this.noteList = noteList;
        this.longClickListener = longClickListener;
        this.context = context;
    }

还有一个ViewHolder,我有一个onClickListener来查找使用 getLayoutPosition() 点击的视图的位置:

static class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView noteTitleText;
        private TextView noteDescriptionText;
        private TextView dateText;
        private TextView weekText;

        RecyclerViewHolder(View view) {
            super(view);

            noteTitleText = (TextView) view.findViewById(R.id.noteTitleText);
            noteDescriptionText = (TextView) view.findViewById(R.id.noteDescriptionText);
            dateText = (TextView) view.findViewById(R.id.dateText);
            weekText = (TextView) view.findViewById(R.id.weekText);

            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            int position = getLayoutPosition();

            // I want the noteList from the RecyclerViewAdapter here.
            Note note = noteList.get(position); 

            Log.d("Item Clicked", String.valueOf(position));

        }
    }

目的是我需要noteList以及onClick()方法中RecyclerViewAdapter的所有注释,以使用intent填充Activity . 我该怎么办呢?

1 回答

  • 0

    在尝试了一小时的解决方案之后,这就是我所确定的 . 我没有在ViewHolder中实现OnClickListener,而是在onBindViewHolder()方法的RecyclerViewAdapter中实现了它,如下所示:

    @Override
    public void onBindViewHolder(final RecyclerViewHolder holder, final int position) {
            final Note note = noteList.get(position);
    
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // The note and noteList can be accessed here.
                }
            });
        }
    

相关问题