babak6655
سه شنبه 11 فروردین 1394, 21:41 عصر
سلام من در لیست ویو بعد از نمایش خواستم که وقتی هر کدام از چک باکس ها کلیک شد مقدار آن در دیتابیس هم تغییر کنه و این کد رو در لیست ویو نوشتم ولی از ارسال مقادیر به متد و برگشتش خطا میگیره و کرش میکنه
public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) {
txt_name.setText(item.name);
// txtDescription.setText(item.description);
checkshow.setChecked(item.checshow);
checkshow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
int ks;
CheckBox checkBox = (CheckBox) view;
handler = new DatabaseHandler();
DatabaseHandler db = new DatabaseHandler(null);
item.checshow = checkBox.isChecked();
// db.open();
if (item.checshow) {
ks = 1;
handler.Update_today(ks, item.id);
}
// db.close();
}
});
و این کد هم در قسمت آپیدیت دیتابیس نوشتم
public class DatabaseHandler
{
public static SQLiteDatabase database;
public static final String DIR_sdcard = Environment.getExternalStorageDirectory().getAbsol utePath();
public static final String DIR_database = DIR_sdcard + "/database_food/";
public static final String Registeration_food = "Registeration_food";
public static final String DATABASE_NAME = "tedatabase_foodst";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_CREATE_Registeration_food = "CREATE TABLE IF NOT EXISTS Registeration_food " +
"(id_food INTEGER PRIMARY KEY AUTOINCREMENT " +
" NOT NULL UNIQUE , name_food TEXT, chkshow_food bool)";
DataBaseHelper dbhelper;
Context context;
SQLiteDatabase db;
public DatabaseHandler(Context ctx)
{
this.context = ctx;
dbhelper = new DataBaseHelper(context);
}
private static class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context ctx)
{
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TABLE_CREATE_Registeration_food);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST Registeration_food");
onCreate(db);
}
}
public DatabaseHandler open()
{
db = dbhelper.getWritableDatabase();
return this;
}
public void close()
{
dbhelper.close();
}
public long Update_today(int chk, int id) {
{
String s = "id_food =='" + id + "'";
String chkshow_food = "chkshow_food";
//This class is used to store a set of values
ContentValues content = new ContentValues();
content.put(chkshow_food, chk);
return db.update(Registeration_food, content, s, null);
}
}
public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) {
txt_name.setText(item.name);
// txtDescription.setText(item.description);
checkshow.setChecked(item.checshow);
checkshow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
int ks;
CheckBox checkBox = (CheckBox) view;
handler = new DatabaseHandler();
DatabaseHandler db = new DatabaseHandler(null);
item.checshow = checkBox.isChecked();
// db.open();
if (item.checshow) {
ks = 1;
handler.Update_today(ks, item.id);
}
// db.close();
}
});
و این کد هم در قسمت آپیدیت دیتابیس نوشتم
public class DatabaseHandler
{
public static SQLiteDatabase database;
public static final String DIR_sdcard = Environment.getExternalStorageDirectory().getAbsol utePath();
public static final String DIR_database = DIR_sdcard + "/database_food/";
public static final String Registeration_food = "Registeration_food";
public static final String DATABASE_NAME = "tedatabase_foodst";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_CREATE_Registeration_food = "CREATE TABLE IF NOT EXISTS Registeration_food " +
"(id_food INTEGER PRIMARY KEY AUTOINCREMENT " +
" NOT NULL UNIQUE , name_food TEXT, chkshow_food bool)";
DataBaseHelper dbhelper;
Context context;
SQLiteDatabase db;
public DatabaseHandler(Context ctx)
{
this.context = ctx;
dbhelper = new DataBaseHelper(context);
}
private static class DataBaseHelper extends SQLiteOpenHelper
{
public DataBaseHelper(Context ctx)
{
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(TABLE_CREATE_Registeration_food);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST Registeration_food");
onCreate(db);
}
}
public DatabaseHandler open()
{
db = dbhelper.getWritableDatabase();
return this;
}
public void close()
{
dbhelper.close();
}
public long Update_today(int chk, int id) {
{
String s = "id_food =='" + id + "'";
String chkshow_food = "chkshow_food";
//This class is used to store a set of values
ContentValues content = new ContentValues();
content.put(chkshow_food, chk);
return db.update(Registeration_food, content, s, null);
}
}