如何从可扩展列表视图中删除组

时间:2012-02-24 14:20:53

标签: android expandablelistview

我正在尝试使用代码

从所选组中获取主键“_id”

groupPositionID是一个像这样初始化的全局变量 和IngredientListGroup_cursor是一个组游标,用于获取可扩展列表视图的组数据。

String groupPositionID=null;
Cursor IngredientListGroup_cursor;

在oncreate代码中:

public void onCreate(Bundle savedInstanceState) {
IngredientListGroup_cursor=helper.GetIngredientsList();
}

ExpandableIngredietnsList.setOnGroupClickListener(new OnGroupClickListener(){

                @Override
                public boolean onGroupClick(
                        ExpandableListView paramExpandableListView,
                        View paramView, int paramInt, long paramLong) {
                    // TODO Auto-generated method stub

                    groupPositionID=IngredientListGroup_cursor.getString(0);

                    Toast toast = Toast.makeText(getBaseContext(),groupPositionID ,Toast.LENGTH_LONG);       
                    toast.show();
                    return false;
                }

            });

这是我的SQLhelper函数,用于从数据库中删除选定的组。

public Cursor GetIngredientsList(){

    return(getReadableDatabase().rawQuery("SELECT _id,Ingredient_name FROM tblIngredients",null));

}

public Cursor DeleteIngredientsList_Item(String index){
        String[] args={index};
        return(getReadableDatabase().rawQuery("DELETE FROM tblIngredients WHERE _id=?",args));

}

我面临的问题是虽然我从光标获取所选组的ID(我能够看到它作为吐司)但是,为什么我无法从上下文菜单中删除它。

在从上下文菜单中选择删除时,以下代码应该正确执行

public boolean onOptionsItemSelected(MenuItem IngredientItem){
    if(IngredientItem.getItemId()==R.id.addIngredient){
        Intent i= new Intent(Ingredients_List.this,Ingredients_Add.class);
        startActivity(i);
        return(true);
    }
    else if (IngredientItem.getItemId()==R.id.deleteIngredient) {

        if(groupPositionID!=null){
              helper.DeleteIngredientsList_Item(groupPositionID);
              return(true);
            }
            else{
                Toast.makeText(getBaseContext(), "Select The Ingredient You want to delete", Toast.LENGTH_LONG).show(); 
            }
    }
    return (super.onOptionsItemSelected(IngredientItem));

} 

我从“groupPositionID”变量中获取选定的主键id值。准确的值也转移到数据库原始查询...仍然没有得到我期待的

Plz帮助ASAP我是android和java的新手

sdk信息(虽然不是必需的)

android:versionCode="1"
android:versionName="1.0" 
android:minSdkVersion="8"

先谢谢

1 个答案:

答案 0 :(得分:3)

public void DeleteIngredientsList_Item(long index){

    String[] args = new String[]{Long.toString(index)};
    Log.v("I am in", "SQLHelper");
    getWritableDatabase().execSQL("DELETE FROM tblIngredients WHERE _id=?",args);

}

我修改了mysql helper中的删除代码

我的函数早先返回光标,这就是为什么它不起作用...实际查询中的meanz没有被执行...

休息很好.. :))