2016-10-11 3 views
-1

SQLiteデータベースを開発中です。私はスキーマがあるテーブルを作成しました:名前、画像、isselected。
メッセージの初期状態は0です。
データベースのsetStatus()メソッドを使用して、ボタンクリックのステータスを更新しています。
ただし、ステータスは変更されません。
私はsetStatus()機能を以下に示し一度私のボタンをクリックして、1にステータスを設定して、0アンドロイドのSQLiteでボタンをクリックしてステータスを更新する方法

に再設定するには、状況が再びそれをクリックします:

public int setStatus(People people) { 
    SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    people.setStatus(1); 
    values.put(STATUS, people.getStatus()); 

    return sqLiteDatabase.update(TABLE_PEOPLE, values, ID + "=?", 
      new String[]{String.valueOf(people.getId())}); 

} 

マイボタンあなたが更新したい行IDを通過しなかった場合

btnBuildNow.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      peopleListSelected = new ArrayList<>(); 
      for (People people : peopleList) { 
       if (people.getStatus()==1) { 
        db.setStatus(people); 
        peopleListSelected.add(people); 
       } 
      } 
      if (peopleListSelected.size() > 0) { 
       Intent intent = new Intent(BulidActivity.this, AlertList.class); 
       intent.putExtra("arrayList", (Serializable) peopleListSelected); 
       startActivity(intent); 
      } 
     } 
    }); 
+0

"id =" + ISSELECTEDの行をTABLE_PEOPLEに最初に追加しましたか? – Serg

+0

「ISSELECTED」はどこで設定しますか? – Fildor

+0

いいえ私はボタンの行のみを変更する行を追加していません@Serg –

答えて

0

クリック(またはあなたがすべての行を更新したい?)、ISSELECTED変数が宣言されていません。私はこの行を意味します:

sqldb.update(TABLE_PEOPLE, cv, "id=" + ISSELECTED, null); 

私はこれを書いています(今はテストできません)。

public String setStatus(String selected) { 
    SQLiteDatabase sqldb = this.getWritableDatabase(); 
    ContentValues cv = new ContentValues(); 
    cv.put("isselected", 1); 
    sqldb.update(TABLE_PEOPLE, cv, "id=" + selected, null); 
    sqldb.close(); 
    return "Anything you want"; 
} 

もう1つの可能な解決策は、直接クエリを記述することである:私は(:https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.htmlドキュメントを参照してください、それはWHERE句である)更新方法の三番目のパラメータに選択されたIDを渡す

public String setStatus(String selected) { 
     SQLiteDatabase sqldb = this.getWritableDatabase(); 
     sqldb.execSQL("UPDATE TABLE_PEOPLE SET ISSELECTED=1 WHERE id=" + selected); 
     sqldb.close(); 
     return "Anything you want"; 
    } 

EDIT: 申し訳ありませんが、db.setStatus();と呼ばれるボタンクリックイベントを修正するように指示するのは忘れないでください:use db.setStatus(people.getId());など(people.id、またはpeopleオブジェクトのIDを表すもの、もしそうでなければidを持っていれば、データベースからIDを取得する必要があります。)

+0

それを試してみましょう! –

+0

私の例を修正しなければならない場合でも、それは機能しましたか? – Pohkalopokh

+0

しかし、オブジェクトモデルでこのステータスを設定して取得する方法はありますか? –

関連する問題