I'm trying to do that after the user delete the item he wants the recyclerView is reLoading so everything looks good and there's not spaces between the items in the list. but i'm keep getting this error. would love your help. Every time the error is in the line of setAdapter , any idea's what can cause it?
public class mainScreen extends AppCompatActivity {
Context context = mainScreen.this;
ImageButton addButtonj;
Intent intent;
exercisesAdapter adapter;
RecyclerView.Adapter mAdapter;
ArrayList<Exercise> arrayList = new ArrayList();
RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
addButtonj = (ImageButton) findViewById(R.id.addButton);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
arrayList = DBCommands.getExercise(context);
adapter = new exercisesAdapter(mainScreen.this, arrayList);
recyclerView.setAdapter(adapter);
addButtonj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent = new Intent(mainScreen.this, addingExercise.class);
startActivity(intent);
}
});
ItemTouchHelper.SimpleCallback simpleCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
public void onSwiped(final RecyclerView.ViewHolder viewHolder, int direction) {
final int position = viewHolder.getAdapterPosition(); //get position which is swipe
if (direction == ItemTouchHelper.LEFT) { //if swipe left
AlertDialog.Builder builder = new AlertDialog.Builder(mainScreen.this); //alert for confirm to delete
builder.setMessage("Are you sure to delete?"); //set message
builder.setPositiveButton("REMOVE", new DialogInterface.OnClickListener() { //when click on DELETE
@Override
public void onClick(DialogInterface dialog, int which) {
TextView theName = (TextView) viewHolder.itemView.findViewById(R.id.textView8);
String uID = theName.getText().toString();
// Toast.makeText(getApplicationContext(), "ID Value = " + uID + " Position = " + position, Toast.LENGTH_LONG).show();
DBCommands.deleteExercise(context, uID);
reload();
}
}).setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { //not removing items if cancel is done
@Override
public void onClick(DialogInterface dialog, int which) {
mAdapter.notifyItemRemoved(position + 1); //notifies the RecyclerView Adapter that data in mAdapter has been removed at a particular position.
mAdapter.notifyItemRangeChanged(position, mAdapter.getItemCount()); //notifies the RecyclerView Adapter that positions of element in mAdapter has been changed from position(removed element index to end of list), please update it.
}
}).show(); //show alert dialog
}
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
public void reload(){
arrayList = DBCommands.getExercise(context);
adapter=new exercisesAdapter(this,arrayList);
**recyclerView.setAdapter(adapter);**
adapter.notifyDataSetChanged();
}
}
and The error:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget.RecyclerView$Adapter)' on a null object reference
at com.enterprise.adirbenami.weight.mainScreen.reload(mainScreen.java:99)
at com.enterprise.adirbenami.weight.mainScreen$2$2.onClick(mainScreen.java:78)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)