2017-04-23 7 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メソッドで:

this stackoverflow question

Updateから収集

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

ボタンのonclick listerを設定しないでください。実際には、クリックしたときにリストビューから項目を削除することをお勧めします。

myDBHelperがメインでこれを使用すると

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(); 
    } 

    } 
} 

ようSQLiteOpenHelperを拡張するクラスのオブジェクトである:あなたのListViewは、あなたの活動のリストビュー、ここで

ためのIDであると仮定すると

アクティビティ:

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

すみませんが、私はsthに尋ねることができますか?今アイテムをクリックすると削除されますが、**ボタンのonClickListener **内の最初のコードが必要ですか?どのように私は私を与えるようにそれを作ったが、それは "アプリが停止している"と言います –

関連する問題