0

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.

Muazzam A.
  • 647
  • 5
  • 17
ItsAk
  • 13
  • 6
  • 1
    Does this answer your question? [How do I pass data between Activities in Android application?](https://stackoverflow.com/questions/2091465/how-do-i-pass-data-between-activities-in-android-application) – Nicolas May 14 '20 at 18:36

2 Answers2

2

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");
  }
Skizo-ozᴉʞS ツ
  • 19,464
  • 18
  • 81
  • 148
  • holder.thumbnail.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onImageClickListener.onImageClick(datum.getUrl()); // this getUrl i want get there and send it to exoplayer class – ItsAk May 14 '20 at 19:58
  • Do you have in your MainActivity implements OnImageClickListener? – Skizo-ozᴉʞS ツ May 15 '20 at 15:00
  • @ItsAk Have you solved this? In order to help other people if this helped you feel free to upvote and mark this as a correct answer. Thanks :) – Skizo-ozᴉʞS ツ Jun 28 '21 at 13:37
1

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

}
Ritu Suman Mohanty
  • 734
  • 1
  • 6
  • 15
  • but i want getUrl value on onclicklistener which i define in OnBindviewholder of adapter class. – ItsAk May 14 '20 at 21:07