Я изучаю Android и тестирую вещи с помощью RecyclerView. Я хотел добавить OnItemClickListener, я хотел посмотреть, работает ли я, поэтому заставляю тост появляться каждый раз, когда я нажимаю на элементы, но происходит что-то странное, срабатывает только тогда, когда я нажимаю МЕЖДУ карточками Recycler, а не когда я нажимаю элементы. Я искал людей с такой же проблемой, но ничего не нашел.
Это RecyclerAdapter и действие для него.
Адаптер
public class CardAdapter extends ListAdapter<Card, CardAdapter.CardHolder> {
private OnItemClickListener listener;
private Context mContext;
private Intent myIntent;
protected CardAdapter() {
super(DIFF_CALLBACK);
}
private static final DiffUtil.ItemCallback<Card> DIFF_CALLBACK = new DiffUtil.ItemCallback<Card>() {
@Override
public boolean areItemsTheSame(Card oldItem, Card newItem) {
return oldItem.getId() == newItem.getId();
}
@Override
public boolean areContentsTheSame(Card oldItem, Card newItem) {
return oldItem.getCardImage() == newItem.getCardImage() &&
oldItem.getCardName().equals(newItem.getCardName()) &&
oldItem.getCardCode().equals(newItem.getCardCode()) &&
oldItem.getCardSet().equals(newItem.getCardSet()) &&
oldItem.getQuantity() == newItem.getQuantity() &&
oldItem.getRarity().equals(newItem.getRarity());
}
};
@NonNull
@Override
public CardHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_item, parent, false);
mContext = parent.getContext();
return new CardHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull CardHolder holder, int position) {
Card currentCard = getItem(position);
Picasso.with(mContext).load(currentCard.getCardImage()).fit().centerInside().into(holder.cardImage);
holder.cardName.setText(currentCard.getCardName());
holder.cardCode.setText(currentCard.getCardCode());
holder.cardSet.setText(currentCard.getCardSet());
holder.rarity.setText(currentCard.getRarity());
}
class CardHolder extends RecyclerView.ViewHolder {
private ImageView cardImage;
private TextView cardName;
private TextView cardCode;
private TextView cardSet;
private TextView quantity;
private TextView rarity;
public CardHolder(View itemView) {
super(itemView);
cardImage = itemView.findViewById(R.id.cardImage);
cardName = itemView.findViewById(R.id.cardName);
cardCode = itemView.findViewById(R.id.cardCode);
cardSet = itemView.findViewById(R.id.cardSet);
rarity = itemView.findViewById(R.id.cardRarity);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "epaepa", Toast.LENGTH_SHORT).show();
Log.d("LogDiaViewHolder","epaepa");
}
});
}
public ImageView getCardImage() {
return cardImage;
}
}
public interface OnItemClickListener {
void onItemClick(Card card);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
}
Активность
public class CardListActivity extends AppCompatActivity {
private CardViewModel cardViewModel;
private View decorView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_card_list);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
final CardAdapter adapter = new CardAdapter();
recyclerView.setAdapter(adapter);
cardViewModel = ViewModelProviders.of(this).get(CardViewModel.class);
cardViewModel.getAllCards().observe(this, new Observer<List<Card>>() {
@Override
public void onChanged(List<Card> cards) {
adapter.submitList(cards);
}
});
decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if (visibility == 0) {
decorView.setSystemUiVisibility(hideSystemBars());
}
}
});
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
decorView.setSystemUiVisibility(hideSystemBars());
}
}
}
Если кто-то захочет получить полный проект, я оставлю репо здесь: https://github.com/nochuckles/BattleSpiritsCBDB
Любая помощь будет полезна,спасибо!