繁体   English   中英

如何将数据从 Recyclerview onClickLister 传递到其他 Activity

[英]How to pass data from Recyclerview onClickLister to other Activity

我想将数据从 onclick 回收器视图主要活动传递给其他活动(exoplayer)。 我创建了 onimageclicklistener class,然后我在适配器 class 中声明了我的 onimageclicklistener。 然后我在主要活动中实现了那个监听器并在图像点击方法上实现了,现在我是空白的,不知道做什么。 如果有人提供帮助,我将不胜感激。

接口 class:

公共接口 OnImageClickListener

{

无效的onImageClick(字符串图像数据);

}

适配器:

公共 class SongAdapter 扩展 RecyclerView.Adapter {

private Context context;
private List<Datum> datums;

//imagelistener define
private OnImageClickListener onImageClickListener;

//3rd argument is listener
public SongAdapter(Context context, List<Datum> datums, OnImageClickListener onImageClickListener) {
    this.context = context;
    this.datums = datums;
    this.onImageClickListener = onImageClickListener;
}

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

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

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

    Datum datum = datums.get(position);

    Glide.with(context).load(datums.get(position).getThumbnail()).into(holder.thumbnail);

    holder.title.setText(datum.getTitle());
    holder.artist.setText(datum.getArtist());
   // holder.duration.setText(datum.getDuration());
    holder.duration.setText(Integer.toString(datum.getDuration()));

    //imageview interface pass
    holder.thumbnail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onImageClickListener.onImageClick(datum.getUrl());

        }
    });

}

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


public class ViewHolder extends RecyclerView.ViewHolder{

    ImageView thumbnail;
    TextView title;
    TextView artist;
    TextView duration;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        thumbnail = (ImageView) itemView.findViewById(R.id.thumbnail);
        title = (TextView) itemView.findViewById(R.id.title);
        artist = (TextView) itemView.findViewById(R.id.artist);
        duration = (TextView) itemView.findViewById(R.id.duration);
    }
}

}

主要活动:

//imageclick listener
@Override
public void onImageClick(String imageData) {

    Intent i = new Intent(MainActivity.this,exoplayer.class);
    startActivity(i);

}

我想向 exoplayer class 发送数据。

使用 Intent Extras

@Override
public void onImageClick(String imageData) {

    Intent i = new Intent(MainActivity.this,exoplayer.class);
    intent.putExtra("YOUR_KEY_STRING", imageDate);
    startActivity(i);

}

然后从 exoplayer Activity 中,在onCreate()方法中检索它,如下所示:

String imageData = getIntent().getStringExtra("YOUR_KEY_STRING");

使用捆绑

@Override
public void onImageClick(String imageData) {

    Intent i = new Intent(MainActivity.this,exoplayer.class);
    Bundle bundle = new Bundle();
    bundle.putString("imageDataKey", imageData);  
    intent.putExtra("YOUR_BUNDLE_KEY", bundle);
    startActivity(i);

}

然后从您的 exoactivity 中检索它,如下所示:

if (getIntent().getExtras() != null) {
      Bundle bundle = getIntent().getStringExtra("YOUR_BUNDLE_KEY");    
      String imageData = bundle.getString("imageDataKey");
  }

使用意图我们可以发送数据

//imageclick listener
@Override
public void onImageClick(String imageData) {

    Intent i = new Intent(MainActivity.this,exoplayer.class);
    i.putExtra("data",imageData);
    startActivity(i);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM