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

您需要刷新复选框才能看到更改,因为您在数据库中进行了更改,但在 UI 上没有。您需要观察数据库并在修改后刷新复选框。

于 2012-04-19T14:59:27.817 回答