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

Java 如何按位置从Listview中删除项目?,java,android,android-listview,listviewitem,Java,Android,Android Listview,Listviewitem,通过只知道位置,有没有办法从listView删除项目?它是列表视图的属性还是适配器的属性?请参见下图,它演示了列表视图的可用属性 更新1 这个问题仍然存在。我使用从SQlite数据库检索的数据填充列表视图。从String[]retrieveMPLNames()以Array的形式返回检索到的数据,然后我将该Array转换为ArrayList,然后将ArrayList绑定到ArrayAdapter。当我想删除时,首先从SQlite数据库中删除该项,然后再次执行相同的过程,即调用String[]re

通过只知道位置,有没有办法从
listView
删除项目?它是
列表视图的属性还是
适配器的属性?请参见下图,它演示了
列表视图的可用属性

更新1

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

Java\u代码:

if(isDBEmpty()){
Log.i(标记“@onCreate():数据库为空”);
}否则{
Log.i(标记“@onCreate():数据库不是空的”);
BindArrayList到ArrayAdapter(arrayToArrayList(retrieveMPLNames());
....
....
受保护的void deleteItemFromDataBase(int-itemClickedPos){
//TODO自动生成的方法存根
Log.i(标记“@deleteItemFromDataBase():”);
如果(!sqliteDB.isOpen()){
//mplOpenHelperDB=新的MPLDataBase(getApplicationContext());
sqliteDB=mplOpenHelperDB.getWritableDatabase();
Log.i(标记“@deleteItemFromDataBase():数据库已关闭,现在已打开”);
}
字符串locName=mplOpenHelperDB.getLocationName((itemClickedPos+1));
int[]x=mplOpenHelperDB.getIDs();
Log.i(标记“@deleteItemFromDataBase():数据库中的总行数=“+mplOpenHelperDB.getCurrentRowNumber());
Log.i(标记“@deleteItemFromDataBase():要从数据库中删除的名称=“+locName”);
Log.i(标记“@deleteItemFromDataBase():要从数据库中删除的项的ID=“+x[itemClickedPos+1]);
mplOpenHelperDB.deleteRow((itemClickedPos+1));
Log.i(标记“@deleteItemFromDataBase():删除后数据库中的行总数=“+MPOpenHelperDB.getCurrentRowNumber());
notifyArrayAdapter();
}
私有void notifyArrayAdapter(){
//TODO自动生成的方法存根
Log.i(标记“@notifyArrayAdapter():”);
mArrayAdapter=newarrayadapter(getApplicationContext(),R.layout.savedlocationlist_布局,
R.id.savedLocationName,arrayToArrayList(retrieveMPLNames());
mListView.setAdapter(mArrayAdapter);
mArrayAdapter.notifyDataSetChanged();
}
私有字符串[]retrieveMPLNames(){
//TODO自动生成的方法存根
Log.d(标记“@retrieveMPLNames():检索MPLNames”);
如果(!sqliteDB.isOpen()){
Log.d(标记“@retrieveMPLNames():您的数据库已关闭,将立即打开”);
sqliteDB=mplOpenHelperDB.getWritableDatabase();
}
Log.d(标记“@retrieveMPLNames():您的数据库已打开”);
int[]dbIDs=mplOpenHelperDB.getIDs();
String[]str=新字符串[dbIDs.length];

对于(int i=0;i您需要从基础数据(即数组、光标等)中删除该项,然后更新列表视图以反映更改。

要从
列表视图
(名为
列表视图
)中删除某项,当用户单击该特定项时,请执行以下操作:

public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    final int positionToRemove = position;
        public void onClick(DialogInterface dialog, int which) {
            listview.remove(positionToRemove);
            adapter.notifyDataSetChanged();
        }});
    }
});
public void-onItemClick(适配器视图a、视图v、内部位置、长id){
最终int位置ToRemove=位置;
public void onClick(DialogInterface dialog,int which){
listview.remove(位置删除);
adapter.notifyDataSetChanged();
}});
}
});

是,只需从列表中删除该项。请在中查看my listview的可用属性image@Elpharaoh您用来设置
列表视图的
ArrayList
的名称是什么?我没有
ArrayList
我有一个
ArrayList
,它是从您的ArrayAdapter提供的数据库中检索到的记录填充的将数据传输到ListView。当您想从ListView中删除某些内容时,首先需要将其从数组中删除。接下来,您需要通过调用MArrayAdapter.notifyDataSetChanged()告诉LisView数组已更改
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
    final int positionToRemove = position;
        public void onClick(DialogInterface dialog, int which) {
            listview.remove(positionToRemove);
            adapter.notifyDataSetChanged();
        }});
    }
});