0

I keep having this error when I run my code. I created an event recycler class to help in displaying my tasks, description, time, etc. it was supposed to be accessed if I were to long-click on a custom calendar that I made.

    java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
    at com.example.projecttweeta.CustomCalenderView$4.onItemLongClick(CustomCalenderView.java:170)
    at android.widget.AbsListView.performLongPress(AbsListView.java:3291)
    at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:3206)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

Here's the code for my Custom calendar view. This should be the source of the error...

        gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            final String date = dateFormat.format(dates.get(position));

            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setCancelable(true);
            View showView = LayoutInflater.from(parent.getContext()).inflate(R.layout.show_task_layout, null);
            RecyclerView recyclerView =(RecyclerView) showView.findViewById(R.id.task_rv);
            RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(showView.getContext());
            recyclerView.setLayoutManager(layoutManager);
            recyclerView.setHasFixedSize(true);
            EventRecyclerAdapter eventRecyclerAdapter = new EventRecyclerAdapter(showView.getContext(),CollectTaskByDate(date));
            recyclerView.setAdapter(eventRecyclerAdapter);
            eventRecyclerAdapter.notifyDataSetChanged();

            builder.setView(showView);
            alertDialog = builder.create();
            alertDialog.show();


   //                TextView Date = showView.findViewById(R.id.date_view);
   //                TextView task = showView.findViewById(R.id.event_name);
   //                TextView description = showView.findViewById(R.id.event_description);
  //                TextView time = showView.findViewById(R.id.eventime);





            return true;
        }
    });

And my EventRecycler...

package com.example.projecttweeta;

 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
  import android.view.ViewGroup;
 import android.widget.TextView;

 import androidx.annotation.NonNull;
  import androidx.recyclerview.widget.RecyclerView;

 import java.util.ArrayList;

 public class EventRecyclerAdapter extends RecyclerView.Adapter<EventRecyclerAdapter.MyViewHolder> {

Context context;
ArrayList<Tasks> arrayList;

public EventRecyclerAdapter(Context context, ArrayList<Tasks> arrayList) {
    this.context = context;
    this.arrayList = arrayList;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.show_task_layout, parent, false);

    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
    Tasks tasks = arrayList.get(position);

    holder.dateText.setText(tasks.getDATE());
    holder.event.setText(tasks.getTITLE());
    holder.description.setText(tasks.getDESCRIPTION());
    holder.time.setText(tasks.getTIME());

}

@Override
public int getItemCount() {
    return arrayList.size();
}




public class MyViewHolder extends RecyclerView.ViewHolder{
    TextView dateText, event, description, time;

    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        dateText = itemView.findViewById(R.id.date_view);
        event = itemView.findViewById(R.id.event_name);
        description = itemView.findViewById(R.id.event_description);
        time = itemView.findViewById(R.id.eventime);
    }
}
}

I'd really appreciate your help guys. Thanks a million!

JahsOwn
  • 1
  • 2

1 Answers1

0

You are trying to call recyclerView.setLayoutManager(layoutManager), but recyclerView is null. Either it's not present in layout, or ID you specify for recycler view is incorrect.

Kirill Volkov
  • 942
  • 1
  • 9
  • 18