#java #android
#java #Android
Вопрос:
Мне нужно вызвать промежуточный элемент в этом действии, щелкнув по элементу в списке, который поступает из моего адаптера.
public class SoundRecyclerAdapter extends RecyclerView.Adapter<SoundRecyclerAdapter.SoundViewHolder> {
private final ArrayList<SoundObject> soundObjects;
SoundRecyclerAdapter(ArrayList<SoundObject> soundObjects) {
this.soundObjects = soundObjects;
}
@NonNull
@Override
public SoundViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.sound_item, parent, false);
return new SoundViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull SoundViewHolder holder, int position) {
final SoundObject object = soundObjects.get(position);
final Integer soundID = object.getItemID();
holder.itemTextView.setText(object.getItemName());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// I tried calling the interstitial here, but to no avail
EventHandlerClass.startMediaPlayer(v, soundID);
}
});
// Handle actions when the user presses a sound button
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
EventHandlerClass.popupManager(v, object);
return true;
}
});
}
@Override
public int getItemCount() {
return soundObjects.size();
}
class SoundViewHolder extends RecyclerView.ViewHolder {
final TextView itemTextView;
SoundViewHolder(View itemView) {
super(itemView);
itemTextView = itemView.findViewById(R.id.textViewItem);
}
}
}
Комментарии:
1. В чем была ваша ошибка?
2. Я попытался вызвать промежуточный элемент с тем же кодом, что и MainActivity в OnClick адаптера. Однако я не могу найти контекст (в случае, если MainActivit — это «this»).
3. Я думаю, что теперь ваша проблема решена. Пожалуйста, примите ответ, который вам помог.
Ответ №1:
Передайте контекст в качестве параметра конструктора адаптера:
private Context context;
SoundRecyclerAdapter(Context context, ArrayList<SoundObject> soundObjects) {
this.soundObjects = soundObjects;
this.context = context;
}
и используйте его в обработчике щелчков
Комментарии:
1. Я сделал реализацию на адаптере. Однако в MainActiviy возникла другая проблема. Я получаю сообщение об ошибке в «soundList», предлагающее мои варианты: создать конструктор или удалить parametrix из SoundRecyclerAdapter. частный конечный SoundRecyclerAdapter SoundAdapter = новый SoundRecyclerAdapter (список звуков);
2. Замените создание экземпляра на
SoundAdapter = new SoundRecyclerAdapter(this, soundList);
3. Это сработало! Я только что внес небольшое изменение, изменив «this, список композиций» на «soundList, this». Большое вам спасибо!!!
4. @RodolfoOliveira, рад помочь
Ответ №2:
Используйте этот код в setOnClickListener()
методе:
mInterstitialAd = new InterstitialAd(SoundRecyclerAdapter.this);
Затем добавьте рекламные запросы и загрузите объявление.
Комментарии:
1. Спасибо за помощь, но реализация S-Sh работала отлично!
2. Это одна и та же работа, выполняемая двумя разными способами. Я сделал с меньшим количеством кода.