0

Im trying to intent Upcoming.java to MeetingDetails.java. I already try toast inside OnItemClickListener and it works, but when i try to intent there is an error.

Upcoming.Java

mAdapter = new MeetingsAdapter(meetingList);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.addItemDecoration(new MeetingDivider(this, LinearLayoutManager.VERTICAL));
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(mAdapter);

    MeetingListClickSupport.addTo(recyclerView).setOnItemClickListener(new MeetingListClickSupport.OnItemClickListener() {
        @Override
        public void onItemClicked(RecyclerView recyclerView, int position, View v) {
            Meeting meeting = meetingList.get(position);
            Intent i = new Intent(getApplicationContext() , MeetingDetails.class);
            i.putExtra("id", meeting.getId());
            i.putExtra("status", "U");
            startActivity(i);
        }
    });

MeetingListClickSupport.java

    @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            RecyclerView.ViewHolder holder = mRecyclerView.getChildViewHolder(v);
            mOnItemClickListener.onItemClicked(mRecyclerView, holder.getAdapterPosition(), v);
        }
     }

MeetingsAdapter.java

private List<Meeting> meetingsList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView mName, description;

    public MyViewHolder(View view) {
        super(view);
        mName = (TextView) view.findViewById(R.id.mName);
        description = (TextView) view.findViewById(R.id.description);
    }
}

public MeetingsAdapter(List<Meeting> meetingsList) {
    this.meetingsList = meetingsList;
}

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

    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
    Meeting meeting = meetingsList.get(position);
    holder.mName.setText(meeting.getName());
    holder.description.setText(meeting.getDescription());
}

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

I got an error like this :

FATAL EXCEPTION: main
Process: com.example.erice.attendancecontroller, PID: 1358
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
                  at com.example.erice.attendancecontroller.Upcoming$1.onItemClicked(Upcoming.java:65)
                  at com.example.erice.attendancecontroller.MeetingListClickSupport$1.onClick(MeetingListClickSupport.java:20)

Please if anyone can help me, thank you very much

Ricz Tan
  • 9
  • 1

1 Answers1

0

In your this line

RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());

your passing getApplicationContext() you have to pass Activity context.

use this

RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(this);

then in RecycleView.Adapter class Create Constructor.

public MeetingsAdapter : RecyclerView.Adapter
{
    Activity context;

     public MeetingsAdapter(Activity context)
        {
            this.context = context;
        }
}

Now in your OnClick use this way

Intent i = new Intent(context , MeetingDetails.class);
Harshad Pansuriya
  • 20,189
  • 8
  • 67
  • 95
  • thank you for your response, but when i use context in OnClick where context refers to ? since i have MeetingsAdapter.Java and i already create a constructor public MeetingsAdapter(Activity context) and declare Activity context in MeetingsAdapter.java – Ricz Tan Nov 24 '16 at 06:30
  • I add my MeetingsAdapter.java in the post – Ricz Tan Nov 24 '16 at 06:35