java - 在 recyclerview 内点击获取数据

标签 java android

我已经使用 recyclerview 构建了一个数据列表。一切都按预期进行。但我想在单击单元格时访问适配器中的一些数据。点击有效。但我不知道如何访问我的事件列表。

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

    private final LayoutInflater layoutInflater;
    private final Context context;
    private ArrayList<Event> events;

    public ExampleAdapter(Context context, ArrayList<Event> events) {
        this.context = context;
        layoutInflater = LayoutInflater.from(context);
        this.events = events;
    }

    @Override
    public ExampleAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        return new ViewHolder(layoutInflater.inflate(R.layout.activity_row, parent, false));
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        //holder.textView.setText(titles[position]);

        holder.title.setText(events.get(position).getTitle());
        holder.time.setText(events.get(position).getTime());
        holder.places.setText(events.get(position).getPlacesLeft());

    }

    public void add(ArrayList<Event> events){
        this.events = events;
        this.notifyDataSetChanged();
    }

    @Override
    public int getItemCount() {
        return events == null ? 0 : events.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        TextView title;
        TextView time;
        TextView places;

        ViewHolder(View view) {
            super(view);

            title = (TextView) view.findViewById(R.id.activity_title);
            time = (TextView) view.findViewById(R.id.activity_time);
            places = (TextView) view.findViewById(R.id.activity_places);



            //textView = (TextView) view.findViewById(R.id.text_view);
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d("ViewHolder", "onClick--> position = " + getPosition());
                }
            });
        }
    }
}

我已经在 ViewHolder 类中声明了 onclick 监听器。单击监听器按预期工作。但我想访问事件数组中的数据。唯一的问题是我无法访问它。

最佳答案

你的 onclick 应该在你的 onBindViewHolder 内

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        //holder.textView.setText(titles[position]);

        holder.title.setText(events.getTitle());
        holder.time.setText(events.getTime());
        holder.places.setText(events.getPlacesLeft());

            holder.yourview.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) 
                {
                    //access from here
            Toast.makeText(yourActivity.this,holder.yourview.getText().toString(), Toast.LENGTH_SHORT).show();

                }
            });

    }

关于java - 在 recyclerview 内点击获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49159452/

相关文章:

java - JPQL 限额查询

android - 处理来自服务的 NFC 标签发现事件

java - Android中如何检查两张图片是否相似

java - 我有一个 PDF 文档,但我需要用 Java 替换一些值

java - 如何创建不均匀范围数随机函数?

android - 在Android中的数据库中一次保存多个数据

android - 如何使用 inputType ="numberDecimal"向 EditText 添加提示?

android - VideoView回调结束视频

java - 你如何增加面板宽度?

java - 外部类成员变量null转内部类