gpt4 book ai didi

javascript - 通过 ListView 从数据库中删除多个选定项目?

转载 作者:行者123 更新时间:2023-12-01 16:21:45 25 4
gpt4 key购买 nike

如何通过 ListView 从数据库中删除多个选定的项目?

我找不到如何做到这一点,我找不到如何获取每个选定对象的ide,或者告诉删除行删除每个选定的项目

我尝试了很多方法,但找不到方法,我对此很陌生,所以需要帮助:/

我试图遵循一些教程,但没有任何结果,符合

"db.delete("personajes", "codigo=" + **(HERE)**, null);"

我输入了“list_items”,但它给我带来了一个微不足道的错误,显然它不是,我三天前尝试过,但没有任何结果,我有点沮丧

    package com.example.x.basededatos;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;




public class Consultartlista extends AppCompatActivity {
private static final String TABLAPERSONAJES = "personajes";
ListView listapersonajes;
ArrayList<String> listaInformacion;
ArrayList lea;
ArrayList<usuario> listaPerso;
AdminSQLiteOpenHelper conn;

public int id;

/********************/
ArrayList<String> list_items = new ArrayList<String>();
int count = 0;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_consultartlista);


conn=new AdminSQLiteOpenHelper(this,"administracion",null,1);


listapersonajes = (ListView) findViewById(R.id.listapersonajes);

consultarListaPersonas();
final ArrayAdapter<String> adaptador=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,listaInformacion);
listapersonajes.setAdapter(adaptador);

/*******/

listapersonajes.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listapersonajes.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
count = count + 1;
mode.setTitle(count + " items seleccionados");

list_items.add(listaInformacion.get(position));


}

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
count = 0;
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.mymenu1, menu);




return true;
}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {



switch (item.getItemId()){
case R.id.delete_id:
for(String msg : list_items){
SQLiteDatabase db=conn.getWritableDatabase();
db.delete("personajes", "codigo=" + , null);
db.close();
adaptador.remove(msg);

}
Toast.makeText(Consultartlista.this, count + " items removidos", Toast.LENGTH_SHORT).show();
count = 0;
mode.finish();
return true;
// break;

default:
return false;


}



//return false;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}
});


}



public void consultarListaPersonas() {
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);
SQLiteDatabase BaseDatabase = admin.getWritableDatabase();
SQLiteDatabase db=conn.getReadableDatabase();

usuario usuario=null;
listaPerso=new ArrayList<usuario>();
Cursor cursor=db.rawQuery("SELECT * FROM "+TABLAPERSONAJES,null);

while (cursor.moveToNext()){
usuario = new usuario();
usuario.setCodigo(cursor.getInt(0));
usuario.setNombre(cursor.getString(1));
usuario.setContraseña(cursor.getString(2));

listaPerso.add(usuario);


}
obtenerLista();

}

private void obtenerLista() {
listaInformacion=new ArrayList<String>();
for(int i=0; i<listaPerso.size();i++){
listaInformacion.add(listaPerso.get(i).getCodigo()+" Nombre: "
+listaPerso.get(i).getNombre()+" Contraseña: "
+listaPerso.get(i).getContraseña());

}
}
}

最佳答案

您的代码存在一些问题。首先,在 onItemCheckedStateChanged 中,仅当 checked 为 true 时,您才需要将项目添加到列表中,否则您必须将其从列表中删除。其次,您的删除不完整,但我假设您正在尝试将项目的 id 连接到 where 子句,在您的情况下是错误的,因为您有一个集合。您必须使用所选项目列表来过滤删除。 SQL 查询应该是这样的:

DELETE FROM personajes WHERE codigo IN ('codigo1','codigo2','codigo3')

因此,您的 SQLite 删除方法应如下所示:

db.delete("personajes", "codigo IN ?" + , String[]{"'codigo1','codigo2','codigo3'"});

您只需创建一个字符串,其中包含所有带单引号并用逗号分隔的 id(如数组)。

第三,推荐您看看Room图书馆。它可以帮助您轻松解决您的问题。

关于javascript - 通过 ListView 从数据库中删除多个选定项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62254990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com