Без правильной трассировки стека я могу предположить, что либо eventsArrayList.get(position).getHeure()
, либо eventsArrayList.get(position).getDay()
вернул ноль.
Если вы думаете, что он падает на eventsArrayList.get(position).getHeure()
, вы можете вместо этого попробовать TextUtils.isEmpty , который также проверяет наличие нуля:
if(TextUtils.isEmpty(eventsArrayList.get(position).getHeure())){
holder.tvDate.setVisibility(View.GONE);
holder.tvLieu.setVisibility(View.GONE);
params.gravity = Gravity.CENTER;
holder.tvNom.setLayoutParams(params);
holder.cardView.setCardBackgroundColor(Color.parseColor("#227c97"));
} else {
// also you should update tvDate, tvLieu, tvNom and cardView
// or you would get weird behaviour when the view holder is being recycled
}
Если вы думаете, что он падает на eventsArrayList.get(position).getDay()
, вы можете использовать TextUtils.equals :
if (TextUtils.equals(eventsArrayList.get(position).getDay(), String.valueOf(cal.get(Calendar.DAY_OF_MONTH)))
Самое главное, я бы не рекомендовал RecyclerView.scrollTo
в onBindViewHolder
, это плохая практика, вы должны выполнять это действие где-то еще. А может быть, потому что вы пытаетесь соответствовать условию, и оно может вернуть ноль для других позиций, поэтому возникает NPE.