当用户从列表中选择时,我想基于给定的id删除sqlite行

时间:2016-02-16 05:33:47

标签: android sqlite

每当我运行此代码时,它会删除所有项目,但不会删除' 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;
    }
});

是oni​​temlongclickmethod

<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>

4 个答案:

答案 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; 
        } 
    });