简体   繁体   中英

How to pass data from Recyclerview onClickLister to other Activity

I want to pass data from onclick recycler view main activity to other activity(exoplayer). I created onimageclicklistener class and then I declared my onimageclicklistener in the adapter class. Then I implement that listener in main activity and implemented on image click method, now I am blank and do not know what do. I will appreciate if someone helps.

interface class:

public interface OnImageClickListener

{

void onImageClick(String imageData);

}

adapter:

public class SongAdapter extends 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);
    }
}

}

Mainactivity:

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

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

}

I want to send data to exoplayer class.

Using Intent Extras

@Override
public void onImageClick(String imageData) {

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

}

And then from exoplayer Activity, you retrieve it in the onCreate() method as follows:

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

Using bundle

@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);

}

And then from your exoactivity you retrieve it as follows:

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

Using intent we can send data

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

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

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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