I am working with a recyclerview and am implementing swipe to delete. the code works pretty well but when I try getting my list from the adapter so that I implement swipe to delete, I get a null object reference. My adapter class is below
public class TlAdapter extends RecyclerView.Adapter<TimelineVholder> {
private List<FetchModel> models;
private Context context;
public TlAdapter(List<FetchModel> models,Context context) {
this.models = models;
this.context= context;
}
@NonNull
@Override
public TimelineVholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.timeline,parent,false);
return new TimelineVholder(view,viewType);
}
@Override
public void onBindViewHolder(@NonNull TimelineVholder holder, final int position) {
SharedPreferences preferences= PreferenceManager.getDefaultSharedPreferences(context);
final SharedPreferences.Editor editor=preferences.edit();
FetchModel list= models.get(position);
String activity= list.getJournalEntry();
String time= list.getTime();
holder.activity.setText(activity);
holder.time.setText(time);
}
@Override
public int getItemViewType(int position) {
return TimelineView.getTimeLineViewType(position,getItemCount());
}
@Override
public int getItemCount() {
int arr=0;
try {
if (models.size()==0){
arr=0;
}
else {
arr=models.size();
}
}
catch (Exception e){}
return arr;
}
public List<FetchModel> getkey(){
return models;
}
}
and my recyclerview gesture class is as below
public class RecyclerViewBasic {
private Context context;
private List<FetchModel> modelList;
public RecyclerViewBasic(Context context) {
this.context = context;
}
public void recyclerGesture(){
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.RIGHT|ItemTouchHelper.LEFT) {
@Override
public boolean onMove(RecyclerView recyclerView,
RecyclerView.ViewHolder
viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int
direction) {
int position= viewHolder.getAdapterPosition();
TlAdapter adapter= new TlAdapter(modelList,context);
modelList= adapter.getkey();
modelList.remove(position);
adapter.notifyDataSetChanged();
}
}).attachToRecyclerView(recyclerView);
}
and the error in my logcat is as below also
06-29 13:19:41.691 4282-4282/com.revosleap.journal E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.revosleap.journal, PID: 4282
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.remove(int)' on a null object reference
at com.revosleap.journal.RecyclerUtils.RecyclerView.RecyclerViewBasic$2.onSwiped(RecyclerViewBasic.java:89)
at android.support.v7.widget.helper.ItemTouchHelper$4.run(ItemTouchHelper.java:692)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
I have gone through a number of similar questions here and tried the methods suggested but I cannot get the one that helps me out. I even tried to populate the list anew but it even got me another error. I'd really appreciate any possible help. Thanks.