每当我运行此代码时,它会删除所有项目,但不会删除' 0'索引值,同时当我重新打开时,它会将其他值替换为' 0'索引值活动,我不知道哪个部分正好问题 这里是我的db类方法
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long iddb) {
Boolean deletedrows=myDB.deletesinglerow(String.valueOf(iddb));
if(deletedrows==true){
Log.d("Clicked item id", " " + iddb);
Toast.makeText(StarMessages.this,"Deleted",Toast.LENGTH_LONG).show();
messageAdapter.remove(arrayList.get(position));
listView.setAdapter(messageAdapter);
messageAdapter.notifyDataSetChanged();
} else {
Toast.makeText(StarMessages.this,"cant delete",Toast.LENGTH_LONG).show();
}
return true;
}
});
是onitemlongclickmethod
<script type="text/javascript">
function validateForm(daForm) {
// check all rb radio buttons
for (var i = 1; i <= 40; i++) {
if (! getCheckedRadioValue(daForm["answer"+i])) {
alert ("Please select a value for Question " + i)
return false
}
}
// add other checks here...
return true
}
function getCheckedRadioValue(radio) {
for (var i=0; i < radio.length; i++) {
if (radio[i].checked) return radio[i].value
}
return false
}
</script>
答案 0 :(得分:0)
您正在将Listview Long参数传递给您的数据库并对其应用查询。您的数据库中可能无法使用该值。传递数据库中存在的唯一。
答案 1 :(得分:0)
要从ur db中删除记录,你必须使用唯一标识符(如Id:primary Key)指定必须删除哪条记录。使用该密钥查询删除记录
答案 2 :(得分:0)
要从SQLite中删除行,最简单的方法是使用其唯一的主键:
好吧,您使用OnItemLongClickListeners tableD
函数的第四个参数。这是listadapter的项目ID。
此项ID需要设置为您的对象主键:
这是通过ListAdapter的onItemLongClick
功能完成的。因此,如果您想在getItemId
中使用正确的ID,则必须覆盖onItemLongClick
:
getItemId
更多信息: http://developer.android.com/intl/es/reference/android/widget/Adapter.html#getItemId(int)
答案 3 :(得分:0)
如果您使用自定义适配器,从BaseAdapter
延伸,那么您可以做的是将从query
获取的ID传递给适配器。然后,您需要override
getItemId()
函数来返回在sqlite数据库中表示的指定行的id。然后在Activity
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long iddb) {
Log.d("Clicked item id", " " + iddb); // this will return the actual db id.
return true;
}
});