java - 从 ListView 和数据库以及 onitemlongclick 监听器中删除值

标签 java android

单击 ListView 时,它会从 ListView 索引处删除该值,但不会再次从该索引中删除该值。

例如,它会从索引 1 中删除该值,如果我删除该值,它不会从索引 1 中删除。如果选择其他索引,则会从另一个索引中删除

onItemLongClickListener(Book.class)

        lview.setOnItemLongClickListener(new 
        AdapterView.OnItemLongClickListener() {
            @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View 
           view, int i, long l) {

            String parse = String.valueOf(i);

            Integer deletedrows =  mydb.DeleteData(String.valueOf(i));
            if(deletedrows > 0 )
            {

                Toast.makeText(BookList.this, "deleted" + parse, Toast.LENGTH_SHORT).show();

            }
            else
            {

                Toast.makeText(BookList.this, "not Deleted" + parse, Toast.LENGTH_SHORT).show();
            }
            return true;
        }

在 ListView (Book.class)上设置数据

      public void getdata()
       {

     ListAdapter lviewAdapter;
    ArrayList<HashMap<String, String>> userList;

        userList = mydb.getalldata();
        if(userList.isEmpty())
        {
           showdata("Error","Nothing Found");
           return;
        }
         ArrayList list = new ArrayList();
        StringBuffer buffer = new StringBuffer();

       lviewAdapter = new SimpleAdapter(BookList.this, userList, 
        R.layout.book_custom_list,
            new String[]{"ID","url","title"},
            new int[]{  R.id.customid,R.id.customurl,R.id.customtitle});
       lview.setAdapter(lviewAdapter);


   }

getdata方法(Database Helper.class)

   public ArrayList<HashMap<String, String>> getalldata()
    {
      SQLiteDatabase db = this.getWritableDatabase();
      ArrayList<HashMap<String, String>> userList = new ArrayList<>();
      Cursor cursor = db.rawQuery("select * from " + TABLE_NAME,null);

    while (cursor.moveToNext()){
        HashMap<String,String> user = new HashMap<>();
        user.put("ID",cursor.getString(cursor.getColumnIndex(Id_name)));

    user.put("title",cursor.getString(cursor.getColumnIndex(title_name)));
        user.put("url",cursor.getString(cursor.getColumnIndex(url_name)));
        userList.add(user);
    }
    return userList;

删除数据也会影响 ListView 中显示的id,希望将id按顺序更改为1,2,3。谢谢

最佳答案

试试这个,

 lview.setOnItemLongClickListener(new 
    AdapterView.OnItemLongClickListener() {
        @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View 
       view, int i, long l) {

        String parse = String.valueOf(i);

        //Add this code when you try to delete the item

        try{
        SQLiteDatabase db = getWritableDatabase();
        String query = "delete from TABLE_NAME where id like "+"'"+(ListView_ID)+"'";
        db.delete(TABLE_ORDERS, KEY_LISTVIEW_ID + "='" + LISTVIEW_ID+ "'", null);
        Cursor cursor = db.rawQuery(query,null);
        cursor.close();

        //Now set the Data in the ListView from the database after you delete the item
        getFreshData();
    }
    catch (Exception e){
        Log.e("order_proof",""+e);
    }

        return true;
    }




private void getFreshData(){

 String query = "SELECT * FROM TABLE_NAME";
 ArrayList<HashMap<String, String>> userList = new ArrayList<>();
  Cursor cursor = db.rawQuery("select * from " + TABLE_NAME,null);

while (cursor.moveToNext()){
    HashMap<String,String> user = new HashMap<>();
    user.put("ID",cursor.getString(cursor.getColumnIndex(Id_name)));

user.put("title",cursor.getString(cursor.getColumnIndex(title_name)));
    user.put("url",cursor.getString(cursor.getColumnIndex(url_name)));
    userList.add(user);
}
return userList;

//populate this list in the ListView.
}

添加此代码后请告诉我@Harpreet。

关于java - 从 ListView 和数据库以及 onitemlongclick 监听器中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56287120/

相关文章:

android - 在 TextView 中显示德文字符

android - bash 列出所有目录,子目录,文件夹,子文件夹然后输出到一个单独的文件

android - 如何从android中的进程获取应用程序名称?

java - 从 recyclerview 打开多个 Activity 会导致应用程序滞后

java - 如何处理列表整数的列表并查找邻居?

java - 如何删除 apache POI 单元格中字符串的整行基础

java - Spring Security中如何使用@PathVariable解析参数名?

java - URL url = getClass().getResource ("") 指的是哪个位置?

android - 手指离开按钮时的事件

java - 为什么 Sybase 不使用功能索引?