【问题标题】:How to pass data from Recyclerview onClickLister to other Activity如何将数据从 Recyclerview onClickListener 传递给其他 Activity
【发布时间】:2020-05-14 18:34:01
【问题描述】:

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

接口类:

公共接口 OnImageClickListener

{

void onImageClick(String imageData);

}

适配器:

公共类 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 类发送数据。

【问题讨论】:

标签: java android android-recyclerview


【解决方案1】:

使用 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");
  }

【讨论】:

  • holder.thumbnail.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onImageClickListener.onImageClick(datum.getUrl()); // 这个 getUrl 我想到达那里并将其发送到 exoplayer 类
  • 你的 MainActivity 中有没有实现 OnImageClickListener?
  • @ItsAk 你解决了吗?为了帮助其他人,如果这有助于您随时投票并将其标记为正确答案。谢谢:)
【解决方案2】:

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

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

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

}

【讨论】:

  • 但我想在 onclicklistener 上获取 getUrl 值,我在适配器类的 OnBindviewholder 中定义。
猜你喜欢
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多