从回收商列表中删除但未从Sqlite数据库中删除的数据

时间:2019-02-18 04:57:10

标签: android sqlite android-recyclerview recycler-adapter

我正在使用Recycler Adapter和Sqlite数据库删除和更新sqlite数据库的android应用程序。

我的问题是,当我在“回收站”视图中单击“项目”以将其删除时,将从列表中删除数据,但是当我单击“返回”并再次打开“列表”时,删除的数据仍然存在。

我已经从设备文件资源管理器中检查了数据库,该数据没有从数据库中删除。

更新发生了相同的事情

这是我的回收站适配器类

public class UserRecyclerAdapterSavedUsers extends RecyclerView.Adapter<UserRecyclerAdapterSavedUsers.UserViewHolder> {

private List<User> listUsers;
Context mContext;
RecyclerView mRecyclerView;
ItemClickListenerLongPressed itemClickListenerLongPressed;
UserRecyclerAdapterSavedUsers userRecyclerAdapterSavedUsers;
View itemView;

public UserRecyclerAdapterSavedUsers(List<User> listUsers,RecyclerView recyclerView) {
    this.listUsers = listUsers;
    mRecyclerView=recyclerView;
}

@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    mContext= parent.getContext();
    itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_user_recycler_second, parent, false);

    return new UserViewHolder(itemView);
}
/**
 * ViewHolder class
 */
public class UserViewHolder extends RecyclerView.ViewHolder {

    //public AppCompatTextView ID;
    public AppCompatTextView textViewID;
    public AppCompatTextView textViewName;
    public AppCompatTextView textViewPassword;
    public AppCompatTextView textViewRole;
    LinearLayout layout;

    public UserViewHolder(View view) {
        super(view);

        textViewID = (AppCompatTextView) view.findViewById(R.id.textViewID);
        textViewName = (AppCompatTextView) view.findViewById(R.id.textViewName);
        textViewPassword = (AppCompatTextView) view.findViewById(R.id.textViewPassword);
        textViewRole = (AppCompatTextView) view.findViewById(R.id.textViewRole);
        layout = (LinearLayout) view.findViewById(R.id.list_view);
    }
}
@Override
public void onBindViewHolder(UserViewHolder holder, final int position) {

    holder.textViewID.setText(listUsers.get(position).getUserid());
    holder.textViewName.setText(listUsers.get(position).getName());
    holder.textViewPassword.setText(listUsers.get(position).getPassword());
    holder.textViewRole.setText(listUsers.get(position).getRole());
    holder.layout.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            displayingAlertDialog(position);
            return false;
        }
    });

}

public void setItemClickListenerLongPressed(ItemClickListenerLongPressed itemClickListenerLongPressed) {
    this.itemClickListenerLongPressed = itemClickListenerLongPressed;
}

@Override
public int getItemCount() {
    Log.v(UsersRecyclerAdapter.class.getSimpleName(),""+listUsers.size());
    return listUsers.size();
}

private void displayingAlertDialog(final int position) {
    final User user= new User();
    //displaying alert dialog box
    AlertDialog.Builder builder = new AlertDialog.Builder(itemView.getContext());
    builder.setTitle("Choose Option");
    builder.setMessage("Update or Delete?");
    builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            //go to update activity
            gotupdateuserActivity(user.getUserid());
            // dialog.cancel();

        }
    });
    builder.setNeutralButton("Delete", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //go to Remove Item
            DatabaseHelper dbHelper = new DatabaseHelper(mContext);
            dbHelper.deletePersonRecord(user.getUserid(), mContext);
            listUsers.remove( position);
            notifyItemRemoved(position);
            mRecyclerView.removeViewAt(position);
            notifyItemRangeChanged(position, listUsers.size());
            notifyDataSetChanged();
            dialog.cancel();

        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    AlertDialog alert11 = builder.create();
    alert11.show();
}
public void remove(int position) {
    listUsers.remove(position);
    notifyItemRemoved(position);
}

private void gotupdateuserActivity(String userid) {
    Intent goToUpdate = new Intent(mContext, UpdateUserRec.class);
    goToUpdate.putExtra("USER_ID", userid);
    Toast.makeText(mContext, "USER REC", Toast.LENGTH_SHORT).show();
    mContext.startActivity(goToUpdate);
}

}

这是Sqlite数据库帮助程序类

public class DatabaseHelper extends SQLiteOpenHelper {

// Database Version
private static final int DATABASE_VERSION = 2;
Context context;

// Database Name
private static final String DATABASE_NAME = "DynamicERP.db";

public  static final String table_imei = "IMEITABLE";
public  static final String table_login= "USERLOGIN";

// User Table Columns names

public static final String imeiid = "IMEIID";
public static final String imei = "IMEI";

public static final String userid = "USERID";
public static final String username = "USERNAME";
public static final String password = "PASSWORD";
public static final String userrole = "USERROLE";


// create table sql query
private static final String DATABASE_CIMEI = "CREATE TABLE " + table_imei + "("
        + imeiid + " INTEGER, " + imei + " VARCHAR );" ;

private static final String DATABASE_CUSER = "CREATE TABLE " + table_login + "("
        + userid + " INTEGER, " + username + " VARCHAR, " + password + " INTEGER, " + userrole + " VARCHAR );" ;

// drop table sql query
private String DROP_IMEI_TABLE = "DROP TABLE IF EXISTS " + table_imei;
private String DROP_USER_TABLE = "DROP TABLE IF EXISTS " + table_login;

/**
 * Constructor
 *
 * @param context
 */
public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(DATABASE_CIMEI);
    db.execSQL(DATABASE_CUSER);
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    //Drop User Table if exist
    db.execSQL(DROP_USER_TABLE);

    // Create tables again
    onCreate(db);

}

/**
 * This method is to create user record
 *
 * @param user
 */
public void addUser(User user) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(userid,user.getUserid());
    values.put(username, user.getName());
    values.put(password, user.getPassword());
    values.put(userrole, user.getRole());

    // Inserting Row
    db.insert(table_login, null, values);
    db.close();
}

public void addIMEI(User user) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(imei,user.getImei());
    values.put(imeiid, user.getImeiid());

    // Inserting Row
    db.insert(table_imei, null, values);
    db.close();
}

/**
 * This method is to fetch all user and return the list of user records
 *
 * @return list
 */
public List<User> getAllUser() {
    // array of columns to fetch
    String[] columns = {
            userid,
            username,
            password,
            userrole
    };
    // sorting orders
    String sortOrder =
            userid + " ASC";
    List<User> userList = new ArrayList<User>();

    SQLiteDatabase db = this.getReadableDatabase();

    // query the user table
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id,user_name,user_email,user_password FROM user ORDER BY user_name;
     */
    Cursor cursor = db.query(table_login, //Table to query
            columns,    //columns to return
            null,        //columns for the WHERE clause
            null,        //The values for the WHERE clause
            null,       //group the rows
            null,       //filter by row groups
            sortOrder); //The sort order


    // Traversing through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            User user = new User();
            //user.setId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(userid))));
            user.setUserid(cursor.getString(cursor.getColumnIndex(userid)));
            user.setName(cursor.getString(cursor.getColumnIndex(username)));
            user.setPassword(cursor.getString(cursor.getColumnIndex(password)));
            user.setRole(cursor.getString(cursor.getColumnIndex(userrole)));
            // Adding user record to list
            userList.add(user);
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();

    // return user list
    return userList;
}



/**
 * This method is to fetch all user and return the list of user records
 *
 * @return list
 */
public List<User> getAllImei() {
    // array of columns to fetch
    String[] columns = {
            imeiid,
            imei,
    };
    // sorting orders
    String sortOrder =
            imeiid + " ASC";
    List<User> userList = new ArrayList<User>();

    SQLiteDatabase db = this.getReadableDatabase();

    // query the user table
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id,user_name,user_email,user_password FROM user ORDER BY user_name;
     */
    Cursor cursor = db.query(table_imei, //Table to query
            columns,    //columns to return
            null,        //columns for the WHERE clause
            null,        //The values for the WHERE clause
            null,       //group the rows
            null,       //filter by row groups
            sortOrder); //The sort order


    // Traversing through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            User user = new User();
            //user.setId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(userid))));
            user.setImei(cursor.getString(cursor.getColumnIndex(imei)));
            user.setImeiid(cursor.getString(cursor.getColumnIndex(imeiid)));
            // Adding user record to list
            userList.add(user);
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();

    // return user list
    return userList;
}

/**
 * This method to update user record
 *
 * @param receivedUSERId
 * @param updateUserRec
 * @param user
 */
public void updateUser(String receivedUSERId, UpdateUserRec updateUserRec, User user) {
    SQLiteDatabase db = this.getWritableDatabase();
    String strSQL = "UPDATE "+table_login+ " SET "+username+" = "+user.getName()+"," +
            " "+password+" = "+user.getPassword()+","+userrole+" = "+user.getRole()+"" +
            " WHERE "+userid+" = "+receivedUSERId;
    db.execSQL(strSQL);
    db.close();
}



/**
 * This method is to delete user record
 *
 * @param user
 */
public void deleteUser(User user) {
    SQLiteDatabase db = this.getWritableDatabase();
    // delete user record by id
    db.delete(table_login, userid + " = ?",
            new String[]{String.valueOf(user.getUserid())});
    db.close();
}

/**
 * This method to check user exist or not
 *
  @param userid
 * @return true/false
 */
public boolean checkUser(String userid) {

    // array of columns to fetch
    String[] columns = {
            userid
    };
    SQLiteDatabase db = this.getReadableDatabase();

    // selection criteria
    String selection = userid + " = ?";

    // selection argument
    String[] selectionArgs = {userid};

    // query user table with condition
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id FROM user WHERE imei = 'dynamic@imei.com';
     */
    Cursor cursor = db.query(table_login, //Table to query
            columns,                    //columns to return
            selection,                  //columns for the WHERE clause
            selectionArgs,              //The values for the WHERE clause
            null,                       //group the rows
            null,                      //filter by row groups
            null);                      //The sort order
    int cursorCount = cursor.getCount();
    cursor.close();
    db.close();

    if (cursorCount > 0) {
        return true;
    }

    return false;
}


/**
 * This method to check user exist or not
 *
 * @param email
 * @param password
 * @return true/false
 */
public boolean checkUser(String email, String password) {

    // array of columns to fetch

    String[] columns = {
            userid
    };
    SQLiteDatabase db = this.getReadableDatabase();
    // selection criteria
    String selection = userid + " = ?" + " AND " + password + " = ?";

    // selection arguments
    String[] selectionArgs = {email, password};

    // query user table with conditions
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id FROM user WHERE user_email = 'jack@androidtutorialshub.com' AND user_password = 'qwerty';
     */
    Cursor cursor = db.query(table_login, //Table to query
            columns,                    //columns to return
            selection,                  //columns for the WHERE clause
            selectionArgs,              //The values for the WHERE clause
            null,                       //group the rows
            null,                       //filter by row groups
            null);                      //The sort order

    int cursorCount = cursor.getCount();

    cursor.close();
    db.close();
    if (cursorCount > 0) {
        return true;
    }

    return false;
}

/**
 * This method to check user exist or not
 *
 * @param userid
 * @param username
 * @return true/false
 */
public boolean checkUserData(String userid, String username) {

    // array of columns to fetch

    String[] columns = {
            userid
    };
    SQLiteDatabase db = this.getReadableDatabase();
    // selection criteria
    String selection = userid + " = ?" + " AND " + username + " = ?";

    // selection arguments
    String[] selectionArgs = {userid, username};

    // query user table with conditions
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id FROM user WHERE user_email = 'jack@androidtutorialshub.com' AND user_password = 'qwerty';
     */
    Cursor cursor = db.query(table_login, //Table to query
            columns,                    //columns to return
            selection,                  //columns for the WHERE clause
            selectionArgs,              //The values for the WHERE clause
            null,                       //group the rows
            null,                       //filter by row groups
            null);                      //The sort order

    int cursorCount = cursor.getCount();

    cursor.close();
    db.close();
    if (cursorCount > 0) {
        return true;
    }

    return false;
}

public boolean checkUserData(String userid) {
    // array of columns to fetch
    String[] columns = {
            userid
    };
    SQLiteDatabase db = this.getReadableDatabase();

    // selection criteria
    String selection = userid + " = ?";

    // selection argument
    String[] selectionArgs = {userid};

    // query user table with condition
    /**
     * Here query function is used to fetch records from user table this function works like we use sql query.
     * SQL query equivalent to this query function is
     * SELECT user_id FROM user WHERE user_email = 'dynamic@data.com';
     */
    Cursor cursor = db.query(table_login, //Table to query
            columns,                    //columns to return
            selection,                  //columns for the WHERE clause
            selectionArgs,              //The values for the WHERE clause
            null,                       //group the rows
            null,                      //filter by row groups
            null);                      //The sort order
    int cursorCount = cursor.getCount();
    cursor.close();
    db.close();

    if (cursorCount > 0) {
        return true;
    }

    return false;
}

public User getUser(String id){
    SQLiteDatabase db = this.getWritableDatabase();
    String query= "SELECT  * FROM "+table_login;

    Cursor cursor = db.rawQuery(query, null);

    User user = new User();
    if(cursor.getCount() > 0) {
        cursor.moveToFirst();

        user.setUserid(cursor.getString(cursor.getColumnIndex(userid)));
        user.setName(cursor.getString(cursor.getColumnIndex(username)));
        user.setPassword(cursor.getString(cursor.getColumnIndex(password)));
        user.setRole(cursor.getString(cursor.getColumnIndex(userrole)));
    }
    return user;

}

public void deletePersonRecord(String useridValue, Context mContext) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DELETE FROM "+table_login+" WHERE "+userid +"='"+useridValue+"'");
    Toast.makeText(mContext, "Deleted successfully.", Toast.LENGTH_SHORT).show();
    db.close();
}
public void deleteIMEIRecord(String imeiidValue, Context mContext) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DELETE FROM "+table_imei+" WHERE "+imeiid +"='"+imeiidValue+"'");
    Toast.makeText(mContext, "Deleted successfully.", Toast.LENGTH_SHORT).show();

}

public void updateIMEI(String receivedIMEIId, UpdateIMEIRec updateIMEIRec, User user) {
    SQLiteDatabase db = this.getWritableDatabase();
    String strSQL = "UPDATE "+table_imei+ " SET "+imei+" = "+user.getImei()+"," +
            " "+imeiid+" = "+user.getImeiid()+
            " WHERE "+imeiid+" = "+receivedIMEIId;
    db.execSQL(strSQL);
    db.close();

}



public User getIMEI(String receivedIMEIId) {
    SQLiteDatabase db = this.getWritableDatabase();
    String query = "SELECT  * FROM " + table_imei  ;
    Cursor cursor = db.rawQuery(query, null);

    User user = new User();
    if(cursor.getCount() > 0) {
        cursor.moveToFirst();

        user.setImeiid(cursor.getString(cursor.getColumnIndex(imeiid)));
        user.setImei(cursor.getString(cursor.getColumnIndex(imei)));
    }
    return user;
}

}

这是我的“回收商列表”活动课程

public class UserUpdateListActivity extends AppCompatActivity {

 AppCompatActivity activity = UserUpdateListActivity.this;

 AppCompatTextView textViewName;
 RecyclerView recyclerViewUsers;
 AppCompatButton textViewButtonNewUser;
 List<User> listUsers;
 UserRecyclerAdapterSavedUsers userRecyclerAdapterSavedUsers;

 DatabaseHelper databaseHelper;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_record_updated_list);
    //getSupportActionBar().setTitle("");
    initViews();
    initObjects();
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    startActivity(new Intent(UserUpdateListActivity.this,AdminMain.class));
    finish();
}

@Override
protected void onRestart() {
    super.onRestart();
}


/**
 * This method is to initialize views
 */
private void initViews() {
    textViewName = (AppCompatTextView) findViewById(R.id.textViewName);
    textViewButtonNewUser = (AppCompatButton) findViewById(R.id.btnaddnew);
    recyclerViewUsers = (RecyclerView) findViewById(R.id.recyclerViewUsers);
    textViewButtonNewUser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(UserUpdateListActivity.this,UserRecordSaveActivity.class));
        }
    });
}

/**
 * This method is to initialize objects to be used
 */
private void initObjects() {
    listUsers = new ArrayList<>();
    userRecyclerAdapterSavedUsers = new UserRecyclerAdapterSavedUsers(listUsers,recyclerViewUsers);

    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerViewUsers.setLayoutManager(mLayoutManager);
    recyclerViewUsers.setItemAnimator(new DefaultItemAnimator());
    recyclerViewUsers.setHasFixedSize(true);
    recyclerViewUsers.setAdapter(userRecyclerAdapterSavedUsers);
    databaseHelper = new DatabaseHelper(activity);

    String emailFromIntent = getIntent().getStringExtra("USERS");
    textViewName.setText(emailFromIntent);

    getDataFromSQLite();
}

/**
 * This method is to fetch all user records from SQLite
 */
private void getDataFromSQLite() {
    // AsyncTask is used that SQLite operation not blocks the UI Thread.
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected Void doInBackground(Void... params) {
            listUsers.clear();
            listUsers.addAll(databaseHelper.getAllUser());

            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            userRecyclerAdapterSavedUsers.notifyDataSetChanged();
        }
    }.execute();
}

}

这是我用来删除数据的查询

    public void deletePersonRecord(String useridValue, Context mContext) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL("DELETE FROM "+table_login+" WHERE "+userid +"='"+useridValue+"'");
    Toast.makeText(mContext, "Deleted successfully.", Toast.LENGTH_SHORT).show();
    db.close();
}

这是我的回收商清单的图片

List Items

当我单击一个项目时,会打开一个像这样的对话框 Dialog

当我单击删除时,这向我显示了 Clicking on Delete

之后,当我按下并再次打开数据时,我删除的数据再次打开 Logcat没有错误

这是我的更新活动

public class UpdateUserRec extends AppCompatActivity {
EditText UserIDUpdate,UserNameUpdate,UserPasswordUpdate,UserRoleUpdate;
Button BtnUserRecUpdate;

DatabaseHelper dbHelper;
String receivedUSERId;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_update_record);
    UserIDUpdate= (EditText) findViewById(R.id.useridupdate);
    UserNameUpdate= (EditText) findViewById(R.id.usernameupdate);
    UserPasswordUpdate= (EditText) findViewById(R.id.userpasswordupdate);
    UserRoleUpdate= (EditText) findViewById(R.id.userroleupdate);
    BtnUserRecUpdate= (Button) findViewById(R.id.userbtnupdate);

    dbHelper = new DatabaseHelper(this);

    try {
        //get intent to get person id
        receivedUSERId= getIntent().getStringExtra("USER_ID");
    } catch (Exception e) {
        e.printStackTrace();
    }
    User user= dbHelper.getUser(receivedUSERId);

    UserIDUpdate.setText(user.getUserid());
    UserNameUpdate.setText(user.getName());
    UserPasswordUpdate.setText(user.getPassword());
    UserRoleUpdate.setText(user.getRole());

    BtnUserRecUpdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            updateUserFunction();
        }
    });
}

private void updateUserFunction() {
    String useridupdate = UserIDUpdate.getText().toString().trim();
    String usernameupdate = UserNameUpdate.getText().toString().trim();
    String userpasswordupdate = UserRoleUpdate.getText().toString().trim();
    String userroleupdate = UserRoleUpdate.getText().toString().trim();

    if(useridupdate.isEmpty()){
        //error name is empty
        Toast.makeText(this, "Enter User ID", Toast.LENGTH_LONG).show();
    }

    if(usernameupdate.isEmpty()){
        //error name is empty
        Toast.makeText(this, "Enter User Name", Toast.LENGTH_LONG).show();
    }

    if(userpasswordupdate.isEmpty()){
        //error name is empty
        Toast.makeText(this, "Enter the password", Toast.LENGTH_LONG).show();
    }

    if(userroleupdate.isEmpty()){
        //error name is empty
        Toast.makeText(this, "Enter User Role", Toast.LENGTH_LONG).show();
    }

    //create updated person
    User user = new User();

    //call dbhelper update
    dbHelper.updateUser(receivedUSERId, this, user);
    //finally redirect back home
    // NOTE you can implement an sqlite callback then redirect on success delete
    goBackHome();

}

private void goBackHome() {
    startActivity(new Intent(UpdateUserRec.this,UsersListActivity.class));
}

}

2 个答案:

答案 0 :(得分:1)

您正在从列表中删除在RecyclerView中显示数据的数据。您应该记住,数据库与列表不同。数据库是persistent的存储对象,用于删除数据和列表的数据是non persistent storage。下次当您从数据库中获取数据时,该列表将再次填充以前删除的项目。

正确的方法是

  1. 从数据库中删除行
  2. 从适配器中的列表中删除项目
  3. notifyItemRemoved(位置)

您在SQL类中有此方法

public List<User> getAllUser() { ... }

再创建一种方法

public boolean deleteUser(id){ 
    db.delete(DATABASE_TABLE, KEY_NAME + "=" + id, null)
}

在删除项目时,请使用特定的Id从适配器中调用此方法,然后执行与以前相同的操作。

答案 1 :(得分:0)

尝试以此更改您的删除功能,看看是否可行

builder.setNeutralButton("Delete", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            //go to Remove Item
            DatabaseHelper dbHelper = new DatabaseHelper(mContext);
            dbHelper.deletePersonRecord(listUsers.get(position).getUserid(), mContext);
            listUsers.remove( position);
            notifyItemRemoved(position);
            mRecyclerView.removeViewAt(position);
            notifyItemRangeChanged(position, listUsers.size());
            notifyDataSetChanged();
            dialog.cancel();

        }
    });

编辑:针对您的新问题:关于更新用户

像这样更改您的setPositiveButton功能

builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            //go to update activity
            gotupdateuserActivity(listUsers.get(position).getUserid());
            // dialog.cancel();

        }
    });