#android-studio #android-intent #android-recyclerview #android-adapter #android-adapterview
#android-студия #android-намерение #android-recyclerview #android-адаптер #android-adapterview
Вопрос:
я хочу вызвать getIntent().getStringExtra()
внутри этого класса адаптера. Я передал имя пользователя в своем предыдущем классе. но здесь я не могу вызвать get intent в этом классе адаптера.
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.layout_gig_item, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
final GigHolder gigHolder = gigList.get(position);
holder.lbl_title.setText(gigHolder.getTitle());
holder.lbl_price.setText(Utils.getDecimal(gigHolder.getTotal()));
holder.lbl_contact.setText(gigHolder.getContact());
holder.img_cover.setImageURI(gigHolder.getImage());
holder.ll_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!isAdminView){
Intent intent = new Intent(activity, GigViewActivity.class);
intent.putExtra(Constants.BUNDLE_ID, gigHolder.getPrimaryKey());
activity.startActivity(intent);
}
}
});
}
}
Ответ №1:
Было бы лучше просто получить данные из activity или фрагмента, поддерживающего класс адаптера, и передать их классу адаптера через функцию
Ответ №2:
У вас есть два способа решить эту проблему:
Первый способ — передать Context
вызывающий Class
параметр в качестве Constructor
параметра Adapter
. Затем вы можете получить доступ StringExtra
к нему, позвонив context.getIntent().getStringExtra()
.
Второй способ — получить StringExtra
от вашего вызова Class
, а затем передать его в качестве Contructor
параметра Adapter
.