in my Login.class i put intent putextra and pass it into FragmentHome then pass it into OrderGuru then pass it into AdapterCariGuru(THis is when the problem come) AdapterCariGuru class is extend to Recyclerview.Adapater and i want to getIntent in this adapter on setonclick listener, my android studio versionis 3,5. Casting to Appcompactactivity won't work, Intializing Activity activity = new Activity() and call it on getIntent also won't work
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
((MyAdapterCariUstad)holder).nama.setText(modalCariGurus.get(position).getNama_guru());
((MyAdapterCariUstad)holder).keahlian.setText(modalCariGurus.get(position).getKeahlian());
((MyAdapterCariUstad)holder).biografi.setText(modalCariGurus.get(position).getBiografi());
((MyAdapterCariUstad)holder).rating.setText(modalCariGurus.get(position).getRating());
((MyAdapterCariUstad)holder).totalsantri.setText(modalCariGurus.get(position).getTotalsantri());
((MyAdapterCariUstad)holder).totalpertemuan.setText(modalCariGurus.get(position).getTotalpertemuan());
((MyAdapterCariUstad)holder).clickcari.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context.getApplicationContext(), DetailGuru.class);
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);
try{ //Problem
((MyAdapterCariUstad) holder).email = ((AppCompatActivity) context).getIntent().getStringExtra("email");
Log.d("emailadapater", ((MyAdapterCariUstad)holder).email + " ");
}catch (Exception e){
Toast.makeText(context, e + " ", Toast.LENGTH_SHORT).show();
Log.d("emailadapater", ((MyAdapterCariUstad)holder).email + " ");
}
intent.putExtra("guru_Id", modalCariGurus.get(position).getGuru_id());
intent.putExtra("mengajar_di", modalCariGurus.get(position).getMengajar_di());
intent.putExtra("email", ((MyAdapterCariUstad) holder).email);
intent.putExtra("pengalaman", modalCariGurus.get(position).getPengalaman());
intent.putExtra("gambar_cari", modalCariGurus.get(position).getGambar_cari());
intent.putExtra("nama_guru",modalCariGurus.get(position).getNama_guru());
intent.putExtra("biografi_guru",modalCariGurus.get(position).getBiografi());
context.startActivity(intent);
}
});
I would suggest you pass any extra as a parameter to your adapter when you initialize it.
Example:
Activiy
public override fun onCreate(savedInstanceState: Bundle?) {
..other code..
yourAdapter = AdapterCariUstad(modalCariGurus, this, getIntent().getStringExtra("email"))
....
}
Adapter
public class AdapterCariUstad extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
ArrayList<ModalCariGuru> modalCariGurus;
Context context;
View view;
NameFilter filter;
String email; // add this
public AdapterCariUstad(ArrayList<ModalCariGuru> modalCariGurus, Context context, String email) {
this.modalCariGurus = modalCariGurus;
this.context = context;
this.email = email;
}
}
Adapter on click
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
....Other code...
((MyAdapterCariUstad) holder).email = email;
@Override
public void onClick(View view) {
Intent intent = new Intent(context.getApplicationContext(), DetailGuru.class);
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("guru_Id", modalCariGurus.get(position).getGuru_id());
intent.putExtra("mengajar_di", modalCariGurus.get(position).getMengajar_di());
intent.putExtra("email", email);
intent.putExtra("pengalaman", modalCariGurus.get(position).getPengalaman());
intent.putExtra("gambar_cari", modalCariGurus.get(position).getGambar_cari());
intent.putExtra("nama_guru",modalCariGurus.get(position).getNama_guru());
intent.putExtra("biografi_guru",modalCariGurus.get(position).getBiografi());
context.startActivity(intent);
}
}
Also, if your adapter is not meant to be used with differents view holder I would suggest you to do something like this
Example:
class YourAdapter(val email : String) : RecyclerView.Adapter<YourViewHolder>() {
..remaining code...
}
so you won't need to keep casting the view holder like below
((MyAdapterCariUstad)holder).nama.setText(modalCariGurus.get(position).getNama_guru());
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.