gpt4 book ai didi

java - 如何按位置从Listview中删除项目?

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

有什么方法可以通过仅知道位置来从 listView 中删除项目吗?它是 listviewadapter 的属性吗?请看下图,它演示了 ListView 的可用属性

enter image description here

Updat_1

问题仍然存在。我使用从 SQlite DataBase 检索的数据填充 Listview。检索到的数据以 Array 形式从 String[]retrieveMPLNames() 返回,然后我将此 Array 转换为 ArrayList > 然后将ArrayList 绑定(bind)到ArrayAdapter。当我想要删除时,首先,我从 SQlite DataBase 中删除该项目,然后再次执行相同的过程,即调用 String[]retrieveMPLNames() 这将从SQlite DataBase检索可用数据,返回的Array将转换为ArrayList,然后将其绑定(bind)到ArrayAdapter >。但是,该项目永远不会从 ListView 中删除。请参阅下面的代码。

Java_Code:

if (isDBEmpty()) {
Log.i(TAG, "@onCreate(): The DataBase Is Empty");
}else {
Log.i(TAG, "@onCreate(): The DataBase Is Not Empty");

bindArrayListToArrayAdapter(arrayToArrayList(retrieveMPLNames()));
....
....
protected void deleteItemFromDataBase(int itemClickedPos) {
// TODO Auto-generated method stub
Log.i(TAG, "@deleteItemFromDataBase():");
if(! sqliteDB.isOpen()) {
//mplOpenHelperDB = new MPLDataBase(getApplicationContext());
sqliteDB = mplOpenHelperDB.getWritableDatabase();
Log.i(TAG, "@deleteItemFromDataBase(): The Database was closed And Now It Is Opened");
}
String locName = mplOpenHelperDB.getLocationName((itemClickedPos+1));
int []x = mplOpenHelperDB.getIDs();
Log.i(TAG, "@deleteItemFromDataBase(): total rows in the database = "+mplOpenHelperDB.getCurrentRowNumber());
Log.i(TAG, "@deleteItemFromDataBase(): name to delete from database = "+locName);
Log.i(TAG, "@deleteItemFromDataBase(): ID of the item to delete from the database= "+x[itemClickedPos+1]);

mplOpenHelperDB.deleteRow((itemClickedPos+1));
Log.i(TAG, "@deleteItemFromDataBase(): total rows in the database after delete = "+mplOpenHelperDB.getCurrentRowNumber());

notifyArrayAdapter();
}

private void notifyArrayAdapter() {
// TODO Auto-generated method stub
Log.i(TAG, "@notifyArrayAdapter(): ");
mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.savedlocationlist_layout,
R.id.savedLocationName, arrayToArrayList(retrieveMPLNames()));
mListView.setAdapter(mArrayAdapter);
mArrayAdapter.notifyDataSetChanged();
}
private String [] retrieveMPLNames() {
// TODO Auto-generated method stub
Log.d(TAG, "@retrieveMPLNames(): Retrieving MPLNames");

if (! sqliteDB.isOpen()) {
Log.d(TAG, "@retrieveMPLNames(): Your DataBase Was Closed And It Will Be Opened Now");
sqliteDB = mplOpenHelperDB.getWritableDatabase();
}

Log.d(TAG, "@retrieveMPLNames(): Your DataBase Is Opened");
int []dbIDs = mplOpenHelperDB.getIDs();

String []str = new String[dbIDs.length];
for(int i=0; i<dbIDs.length; i++) {
str[i] = mplOpenHelperDB.getLocationName(dbIDs[i]);
Log.d(TAG, "@retrieveMPLNames(): "+str[i]);
Log.d(TAG, "@retrieveMPLNames(): Total Rows Retrieved = "+str.length);
}
return str;
}

最佳答案

您需要从基础数据(即数组、游标等)中删除该项目,然后更新 ListView 以反射(reflect)更改。

关于java - 如何按位置从Listview中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222514/

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