-1

I am fetching the data from JSON file and I have to group those data based on the dates. For example, all the activities occurred during June 6 is listed below them. i.e. June 6 is header and all the event occurred them is listed as Even.

My problem is while I am trying to convert those dates into some format I am getting null pointer exception.

There are two layouts one for a header which has a date and other for events. I am trying to set the date into the header layout in onBindViewHolder method of the adapter. There I am getting null pointer exception

Thank you

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
    switch (viewHolder.getItemViewType()) {
        case ListItem.TYPE_HEADER:

            HeaderItem dateItem = (HeaderItem) consolidatedList.get(i);
            HeaderViewHolder dateViewHolder = (HeaderViewHolder) viewHolder;
            String pattern = "yyyy-MM-dd";
            DateFormat df4 = new SimpleDateFormat("MM dd, yyyy");

            Date date = null;
            String str4 = null;
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
            try {
                 date = simpleDateFormat.parse(dateItem.getDate());
                 str4 = df4.format(date);

            } catch (ParseException e) {
                e.printStackTrace();
            }

            dateViewHolder.mDate.setText(str4);

            break;

        case ListItem.TYPE_EVENT:

            EventItem event = (EventItem) consolidatedList.get(i);
            EventViewHolder holder = (EventViewHolder) viewHolder;
            holder.mDate.setText(event.getStreamItem().getDate());
            holder.mDesc.setText(event.getStreamItem().getDesc());
            holder.mTitle.setText(event.getStreamItem().getTitle());

            String image = event.getStreamItem().getImage();

            if (image.contains("education_icon.png")) {

                holder.mImageView.setImageResource(R.drawable.boardofeducation);
            } else if (image.contains("legislature_icon.png")) {
                holder.mImageView.setImageResource(R.drawable.legislature);
            }
            break;
    }
}

//HeaderView Holder

private static class HeaderViewHolder extends RecyclerView.ViewHolder {

        protected TextView mDate;

        public HeaderViewHolder(@NonNull View itemView) {
             super(itemView);
             TextView mDate = itemView.findViewById(R.id.date);
        }
    }

Here's the error.

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at com.example.dipalbhandari.nebraskacapitollive.StreamArrayAdapter.onBindViewHolder(StreamArrayAdapter.java:97)
remedy.
  • 2,032
  • 3
  • 25
  • 48

1 Answers1

-1

Change this line TextView mDate = itemView.findViewById(R.id.date);

to

mDate = itemView.findViewById(R.id.date);

you should initialise the object correctly once you declared the object in view holder class

Quick learner
  • 10,632
  • 4
  • 45
  • 55