0

ユーザーがボタンをクリックしたときに見積もりを更新するアクティビティを作成しました。同じアクティビティ内に、ユーザーが見積もりを気に入った場合にクリックできるチェックボックスがあります。

チェックボックスを除けば、すべてが完全に機能します。ユーザーが見積もりを気に入ったときにクリックしたら、そのチェックボックスをオンにします。これは、ユーザーがアクティビティから離れて後の段階に戻った場合にのみ発生します。

ただし、ユーザーがアクティビティ内にとどまり、見積もりに戻ると、ユーザー設定の代わりに古い状態が表示されます。

チェックボックスはデータベース内の値から構成されます。値が1の場合はチェックボックスをオンにし、そうでない場合はチェックボックスをオフにします。

コードを以下に示します。

ユーザーが[次へ]ボタンをクリックすると、次のコードが実行されます。

Button nextGenerateButton = (Button) findViewById(R.id.btn_next_quotes);
nextGenerateButton.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub
        String nextQuote = myDbHelper.getnextQuote();
        setQuoteDisplay(nextQuote);
        btn_favorite.setChecked(myDbHelper.getFavouriteCheckBoxValue());

    }
});

ボタンは次の引用符を取得し、getFavouriteCheckBoxValue()は、お気に入りの列がデータベースでマークされているかどうかを確認し、チェックボックスの値を設定するtrueまたはfalseを返します。

public boolean getFavouriteCheckBoxValue()
    {
        int laballedFavourite = cursor.getInt(0);

        if(laballedFavourite == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }

ユーザーが見積もりを気に入った場合、コードはaddFavourite()を実行して、お気に入りの列が変更されるテーブルを更新します。

btn_favorite.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // TODO Auto-generated method stub              
        if(isChecked == true)
        {
            myDbHelper.addFavourite();
        }

        if(isChecked == false)
        {
            myDbHelper.removeFavourite();
        }
    }
});


public void addFavourite()
{
    ContentValues vals = new ContentValues();
    vals.put("favouriteQuote", 1);
    db.update(TABLE_NAME, vals, "columnId = " + cursor.getInt(1), null);
}

繰り返しますが、これは見積もりアクティビティを再開したときにのみ完全に機能し、現在見積もりアクティビティに参加しているときは機能しません。

これが理にかなっていることを願っています。

どんな助けでも大歓迎です。

4

2 に答える 2

0

カーソルを更新すると問題が解決しました。

于 2012-04-24T14:33:01.460 に答える
0

DBで変更を行ったが、UIでは変更を行っていないため、変更を表示するにはチェックボックスを更新する必要があります。dbを観察し、変更後にチェックボックスを更新する必要があります。

于 2012-04-19T14:59:27.817 に答える