我在一個sqlite表中有一個值,它根據複選框的狀態進行更新。 目前,該值不會更新,但只有當我關閉應用程序。 我要的是:Android在基於複選框的sqlite中更新值
- 檢查複選框
- 更新的SQLite表
- 更新/刷新視圖值,顯示更新後的值立即
另外,我也把複選框監聽器在適配器中。這個可以嗎?如果不是,我如何在主要活動中使用監聽器?
在此先感謝您的幫助。
下面是一些代碼
適配器:
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
{
db = new MyDatabase(context);
final Child child = (Child) getChild(groupPosition,childPosition);
if(convertView == null)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_layout,null);
}
convertView.setTag(getChild(groupPosition,childPosition).toString());
TextView value = (TextView) convertView.findViewById(R.id.value);
value.setText(String.valueOf(child.getValue()));
CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox);
if(child.getValue() == 0)
{
cb.setChecked(true);
}
cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (b == true)
{
String id = String.valueOf(childPosition+1);
db.updateIsChecked(id);
}
else
{
String id = String.valueOf(childPosition+1);
db.updateIsNotChecked(id);
}
}
});
return convertView;
}
數據庫:
public void updateIsChecked(String id)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues newValues = new ContentValues();
newValues.put("value", 0);
db.update("table",newValues,"id =? ",new String[] {id});
db.close();
}
我把複選框偵聽器放在適配器中。這個可以嗎? >>> **是的OKAY ** – 2014-10-29 05:56:02
在setOnCheckedChangeListener中調用'adapter.notifyDataSetChanged();'。 – 2014-10-29 05:58:48