如何将数据从RecyclerView传递给活动

我需要在单击recyclelerview的图像时将数据从recyclerView adapter传递到main activity 。 有人可以帮忙吗?

 public class VideoAdapter extends RecyclerView.Adapter { private ArrayList 

创建一个侦听器接口,让MainActivity实现它。 这样你就可以在你的onClick方法中调用你的回调方法。

接口:

 public interface OnImageClickListener { void onImageClick(String imageData); } 

主要活动:

 public class MainActivity implements OnImageClickListener { @Override public void onImageClick(String imageData) { // handle image data } //... } 

您的VideoAdapter:

  //... private OnImageClickListener onImageClickListener; public VideoAdapter(ArrayList 

如果要将onclick中的值传递给Parent activityonMethodCallbackMainActivity使用onMethodCallback

 public class MainActivity extends Activity implements AdapterCallback { private MyAdapter mMyAdapter; @Override public void onMethodCallback(String yourValue) { // get your value here } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.mMyAdapter = new MyAdapter(this); } } 

在您的适配器中:

 public class MyAdapter extends RecyclerView.Adapter { private AdapterCallback mAdapterCallback; public MyAdapter(Context context) { try { this.mAdapterCallback = ((AdapterCallback) context); } catch (ClassCastException e) { throw new ClassCastException("Activity must implement AdapterCallback."); } } @Override public void onBindViewHolder(final MyAdapter.ViewHolder viewHolder, final int i) { // simple example, call interface here // not complete viewHolder.itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mAdapterCallback.onMethodCallback(); } }); } public static interface AdapterCallback { void onMethodCallback(String yourValue); } } 

在你的适配器中编写interface ,如下所示:

 interface clickItemListener { void onItemClick(String order); } 

你的构造函数应该是:

 privat clickItemListener clickItemListeners; public VideoAdapter(ArrayList 

然后你可以传递给Activity

 yourLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { clickItemListeners.onItemClick(yourValue); } }); 

并在您的活动中implement您的interface ,如下:

 public class yourActivity extends AppCompatActivity implements YourAdapter.clickItemListener{ @Override public void onItemClick(String order) { //You can get your value here } } 

请记住,您应该将活动传递给adapter ,如下:

 YourAdapter adapter = new YourAdapter (... , ... , ... , activity.this); 

如果您正在使用kotlin,解决方案要简单得多。 原文答案在这里

传递lamda val itemClick: (Int) -> Unit到你的适配器。

 class MyRecyclerViewAdapter(params , val itemClick: (Int) -> Unit): RecyclerView.Adapter() { internal inner class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { ... itemView.setOnClickListener( {itemClick(layoutPosition)} ) } } 

在您的Activity中使用返回的值position

 val myAdapter = MyRecyclerViewAdapter(params) { position -> // do something }