Как поместить GetIntent.getStringExtra(«имя пользователя») в адаптер Android onBindViewHolder (@NonNull конечный держатель ViewHolder, конечная позиция int)

#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 .