2017-04-23 75 views
-2
中的选定项目

我有数据库,并使用simple_list_item_checked布局显示列表中的内容。现在我想删除用户从该列表中选择的项目。我该怎么做? 这是XML活动:如何删除android

<ImageButton 
    android:id="@+id/ib_delete" 
    android:layout_width="40dp" 
    android:layout_height="40dp" 
    android:background="@drawable/delete" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/tv_page_mySpace2" 
    android:layout_marginTop="20dp"/> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/theuserideaslist" 
    android:background="@drawable/brain1" 
    android:layout_below="@id/ib_delete" 
    android:layout_marginTop="20dp"/> 

,这是remove方法,他们告诉我把它放在我开帮手:

public void removeIedas (long id) { 
    String string = String.valueOf(id); 

    database.execSQL("DELETE FROM name WHERE _id = '" + string + "'"); 
} 

,这是我对活动的java类:

final MyOpenHelper myOpenHelper = new MyOpenHelper(getApplicationContext()); 
    final ListView theuserideaslist = (ListView) findViewById(R.id.theuserideaslist); 

    ArrayList<String> n ; 
    n = myOpenHelper.ShowTheUserIdeas(); 
    final ArrayAdapter<String> myadapter = new ArrayAdapter<String> (getApplicationContext() , android.R.layout.simple_list_item_checked , n) ; 
    theuserideaslist.setAdapter(myadapter); 
    theuserideaslist.setChoiceMode(2); 

    final ImageButton ib_delete = (ImageButton) findViewById(R.id.ib_delete); 

    theuserideaslist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, final long id) { 

      ib_delete.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        myOpenHelper.removeIedas(id); //create removemethod in database class 

       } 
      }); 

     } 
    }); 

    /* ib_delete.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      theuserideaslist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

        // ArrayList database = null; 
        myOpenHelper.removeIedas(id); //create removemethod in database class 

       } 
      }); 
     } 
    });*/ 

我想要的是:当我点击ib_delete删除选中的项目。 对不起,我还是新手。 谢谢。

+0

嗨Somaya, 我假设你正在使用一些java代码来做到这一点,simple_list_item_checked是一个ArrayList或它的排序。你能分享一下代码的快速代码段吗?你试图达到这个目的,以便我能更好地帮助你? 谢谢 –

+0

你好Aritra,我不知道我认为这是不可能在这里分享它的评论!我能做什么?真的非常感谢你的帮助。 Aritra –

+0

嘿,没有probs :-)但顺便说一下你是否尝试过@某些用户的回答?它有用吗? –

回答

1

使用:

listview.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     database.remove(id); //Create a remove method in your database class 
    } 
}); 

和remove方法:

public void remove(long id){ 
    String string = String.valueOf(id); 
    database.execSQL("DELETE FROM favorite WHERE _id = '" + string + "'"); 
} 

this stackoverflow question

收集更新10

请勿在按钮上设置onclick列表器,实际上您可能想要在单击列表视图时从列表视图中删除项目。

假设你的ListView是为您的活动的ListView的ID,

这里:

myDBHelper的类的对象,扩展SQLiteOpenHelper像

public class MyDBHelper extends SQLiteOpenHelper{ 

//codes.. 

    public void DeleteFromDB(String d) { 
    SQLiteDatabase db = getWritableDatabase(); 

    String dm = "\"" + d + "\""; 

    try { 
     db.execSQL("delete from " + db_table + " where taskName=" + dm); 
    } catch (SQLException e) { 
     Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show(); 
    } 

    } 
} 

然后在主要使用活动:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     myDBHelper.DeleteFromDB(arrayList.get(position)); 

     } 
    }); 
+0

没问题,在** MyOpenHelper **的时候我创建删除方法,写什么来代替_database_? –

+0

创建一个'SQLiteDatabase'类的对象,就是这里的数据库。 –

+0

对不起,但我可以问一下吗?现在,如果我点击该项目,那么它将被删除或必须,但我的第一个代码** button onClickListener **?我让它像你如何给我,但它说“该应用程序已停止” –