2016-04-06 17 views
-1

私はデータベースからのデータを表示するリストビューを作成しました。 ListViewの各行には、CheckBoxを削除するボタンとそれを編集するボタンが追加されています。 私の問題は、ボタンがクリックされ、どのように私のsqliteデータベースコマンドのidを変換して使用する行以上のIDを取得することです? 長いクリックリスナーの設定は、CheckBoxがあるときに行が長くクリックすると応答しないため、少し問題がありました。そのため、ボタンを存在させて機能させます。 ありがとうListViewの各行のボタンを使用してsqliteデータベースの行を削除します

+1

で、既存のオブジェクトコード –

+0

がgetViewメソッド()カスタムアダプターの方法で削除ボタンにonClickListenerセット追加し、id値を取得してください。特定getViewメソッドで与えられた位置を取得し、そのIDを使用してデータベースから行を削除すると、テーブルにユニークなIDが必要です。また、オブジェクト・クラスにもIDを入れる必要があるため、 。 –

+0

私はSugarORM、http://codex2android.blogspot.in/2016/03/sugar-orm-with-sqlite-android-part-i.htmlを使用して私のblogpostで同じものを実装しました。助けて欲しいと思っています – HourGlass

答えて

0

最初に私はコードの構造を説明し、その後私が見つけた解決法を説明します。

このアプリケーションは、ListViewを含む主なアクティビティで構成されています。次に、データベースを処理するSqliteOpenHelperのクラスがあり、データベース内の変数のセッターメソッドとゲッターメソッドを含むTaskProviderクラスと、ListViewのカスタムアダプターであるTaskAdapterがあります。 私が直面していた問題は、その行に存在するボタンによって特定の行に対処できないという事実でした。ここで私はそれをやった方法です:

SqliteOpenHelperクラスで最初に、方法は、アダプタクラスのGetViewメソッド、ボタンに続いて、where句とSqliteDataBase.delete方法

public void deleteTask (SQLiteDatabase db , String deleted){ 
    String selection = Contracts.achieveTaskClass.ID+" LIKE ?"; 
    String[] selectionArgs = {deleted}; 
    db.delete(Contracts.achieveTaskClass.ACHIEVETASK_TABLE,selection,selectionArgs); 
} 

を保存するために作成されます発見された行を削除するように設定され、次のsetOnClickListenerが追加された:

objectHolder.taskDeleteButton = (Button) row.findViewById(R.id.list_view_delete_button); 
    objectHolder.taskDeleteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String deleted; 
      deleted = ((TaskProvider) getItem(position)).getId(); 
      Sqldb sqldb = new Sqldb(getContext()); 
      SQLiteDatabase db = sqldb.getReadableDatabase(); 
      sqldb.deleteTask(db,deleted); 



     } 
    }); 
関連する問題