我创建了一个在用户单击按钮时刷新引号的活动。在同一活动中,有一个复选框,如果用户喜欢该报价,则可以单击该复选框。
除了复选框之外,一切都完美无缺。当用户单击他们喜欢的报价时,我希望选中该复选框。这只发生在用户离开活动并在稍后阶段返回时。
但是,当用户停留在活动中并返回报价时,将显示旧状态而不是用户偏好。
该复选框是从数据库中的值配置的,如果值为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);
}
同样,这仅在我恢复报价活动时才完美工作,而不是当我当前处于报价活动中时。
希望这是有道理的。
任何帮助将不胜感激。