2017-04-23 26 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 **?我讓它像你如何給我,但它說「該應用程序已停止」 –