Данные удалены из списка ресайклеров, но не из базы данных Sqlite

Я работаю над приложением для Android, в котором я использую адаптер Recycler и базу данных Sqlite для удаления и обновления базы данных sqlite.

Моя проблема заключается в том, что когда я нажимаю на элемент в представлении Recycler, чтобы удалить его, он удаляет данные из списка, но когда я нажимаю «Назад» и снова открываю список, удаленные данные все еще там.

Я проверил свою базу данных из проводника устройства, чтобы данные не удалялись из базы данных.

То же самое происходит с обновлением

Вот мой класс адаптера Recycler

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 = '[email protected]';
     */
    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 = '[email protected]' 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 = '[email protected]' 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 = '[email protected]';
     */
    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();
}

Вот изображение моего списка переработчиков

Список элементов

Когда я нажимаю на элемент, он открывает мне диалоговое окно, подобное этому Диалог

Когда я нажимаю удалить, это показывает мне это Нажав на Удалить

После этого Когда я нажал назад и снова открыл Данные, которые я удалил, снова откройте 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));
}

}

Я бы посоветовал вам распечатать запрос в журнале. и проверьте его выполнение вручную после извлечения базы данных

Tejas Pandya 18.02.2019 06:30

Я добавил запрос, который я использую

Aalia Ali 18.02.2019 06:40

нет, я говорю о печати во время выполнения. так что вы можете получить фактическое значение, передаваемое этой функции

Tejas Pandya 18.02.2019 06:41

Хорошо, я работаю над этим

Aalia Ali 18.02.2019 06:44

после этого извлеките свою базу данных, откройте ее в любом средстве просмотра базы данных и запустите этот запрос вручную на этом файле . смотри результат..

Tejas Pandya 18.02.2019 06:45

Проверьте свой userid в запросе

code4rox 18.02.2019 06:50
3
6
203
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы удаляете данные из списка, который показывает данные в RecyclerView. Вы должны иметь в виду, что база данных отличается от вашего списка. База данных — это persistent хранилище для данных и списка, откуда вы удаляете элемент non persistent storage. В следующий раз, когда вы получите данные из базы данных, список снова будет заполнен элементами, которые вы ранее удалили.

Правильный метод

  1. Удалить строку из базы данных
  2. Удалить элемент из списка в адаптере
  3. уведомитьItemRemoved(позиция)

У вас есть этот метод в классе SQL

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

Создайте еще один метод

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

При удалении элемента вызовите этот метод из вашего адаптера с определенным Id, затем сделайте то же самое, что и ранее.

У меня есть метод удаления пользователя в классе БД; Я нашел, получив файл базы данных из Device File Explorer и проверив его, и я узнал, что данные не удаляются

Aalia Ali 18.02.2019 06:21

Если строка удалена из базы данных, почему она снова отображается; я немного запутался

Aalia Ali 18.02.2019 06:22

Проблема в том, что строка не удаляется из базы данных

Abdur Rahman 18.02.2019 06:23

Если вы используете ORM, проблема может быть решена путем очистки кэша во время выполнения. Он предоставляет простой метод для его очистки, например, daosession.clear().

Abdur Rahman 18.02.2019 06:25

У меня есть метод для удаления пользователя в классе db как DeletePersonRecord

Aalia Ali 18.02.2019 06:25

Проблема остается той же, попробовав ваш ответ

Aalia Ali 18.02.2019 06:37

Вы проверяли возвращаемое значение запроса на удаление? Что это?

Abdur Rahman 18.02.2019 06:40

На этот раз сценарий был открыт, я нажал определенный элемент, откроется диалоговое окно, и я нажал кнопку «Удалить» в диалоговом окне; Отображается тост, который я реализовал во вспомогательном классе в методе удаления записи человека, и данные удаляются из списка; когда я нажал назад и снова открыл список, он показывает все данные в списке

Aalia Ali 18.02.2019 06:43
Ответ принят как подходящий

попробуйте изменить функциональность удаления с помощью этого и посмотрите, работает ли он

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();

        }
    });

@AaliaAli ты проверил это?

Tejas Pandya 18.02.2019 07:22

Да, я проверил это, и я рад, что этот фрагмент кода сработал для моей проблемы.

Aalia Ali 18.02.2019 07:29

@AaliaAli я рада, что помогла тебе

Tejas Pandya 18.02.2019 07:33

Теперь я хочу обновить данные; Когда я нажимаю кнопку обновления диалогового окна, открывается новое действие; и данные, которые открыты в кнопке обновления, всегда такие же, как я нажимаю на любой элемент

Aalia Ali 18.02.2019 10:12

Это также открывает одну и ту же запись всегда

Aalia Ali 18.02.2019 11:09

Давайте продолжить обсуждение в чате.

Aalia Ali 18.02.2019 11:31

Запись, открытая при обновлении, полученная из базы данных, всегда одна и та же. Я пробовал ваш обновленный ответ, но ничего не происходит.

Aalia Ali 18.02.2019 12:48

@AaliaAli, пожалуйста, смотрите обновленное сообщение в чате, который вы создали выше

Tejas Pandya 18.02.2019 13:06

Меня забанили за создание чата вы можете его создать

Aalia Ali 18.02.2019 13:38

Извините, я тоже не могу его создать. Пишет, что вы забанены.

Tejas Pandya 18.02.2019 13:53

Я не могу сделать это

Aalia Ali 18.02.2019 16:17

Другие вопросы по теме