gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:17:18 24 4
gpt4 key购买 nike

单击 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/

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