Я хочу обновить значение ответа, когда пользователь выбирает элемент в recylerview.Я сохраняю значение ответа в нулевой (не выбранной) и одной (выбранной) форме.В recylerview adpater я напечатал db.update()
возвращаемое значение, и оно показывает 1. но когда я выбираю все данные из таблицы, ни одно из значений строки не обновлялось.Это очень беспокоит меня.Кто-нибудь может мне помочь?
Это мой конструктор RecylerviewAdapter, где я инициализировал databaseHelper
public SurveyAnswerAdapter(Context context, ArrayList<SurveyAnswerModel>
arrayList, OnDragStartListener dragStartListener,
Bundle bundle, OnCountSizeDoneListener onCountSizeDoneListener) {
this.arrayList = arrayList;
this.context = context;
mDragStartListener = dragStartListener;
this.bundle = bundle;
countList = new ArrayList<>();
mOnCountSizeDoneListener = onCountSizeDoneListener;
databaseHelper = new AnswerHelperSqlite(context);
}
Это мой класс RecylerviewAdpater для метода onClick
holder.btnAns.setTag(position);
holder.btnAns.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectedPosition = (int) view.getTag();
if (bundle.getBoolean("MultiSelectionAllow")) {
surveyAnswerModel.setIsSelected(!surveyAnswerModel.getIsSelected());
if (surveyAnswerModel.getIsSelected()) {
holder.btnAns.setBackground(ContextCompat.getDrawable(context,
R.drawable.button_corner_with_background));
holder.btnAns.setTextColor(ContextCompat.getColor(context,
R.color.white));
surveyAnswerModel.setIsSelected(true);
} else {
holder.btnAns.setBackground(ContextCompat.getDrawable(context,
R.drawable.button_round_corner));
holder.btnAns.setTextColor(ContextCompat.getColor(context,
R.color.chronic_acne_blue));
surveyAnswerModel.setIsSelected(false);
}
} else {
surveyAnswerModel.setIsSelected(true);
holder.btnAns.setBackground(ContextCompat.getDrawable(context,
R.drawable.button_corner_with_background));
holder.btnAns.setTextColor(ContextCompat.getColor(context,
R.color.white));
if (row_index > -1) {
SurveyAnswerModel model = arrayList.get(row_index);
model.setIsSelected(false);
holder.btnAns.setBackground(ContextCompat.getDrawable(context,
R.drawable.button_round_corner));
holder.btnAns.setTextColor(ContextCompat.getColor(context,
R.color.chronic_acne_blue));
}
row_index = position;
notifyDataSetChanged();
databaseHelper.updateValue(arrayList.get(position).getId(),
arrayList.get(position).getIsSelected() ? 1 : 0)
Cursor cursor = databaseHelper.getTimeRecordList();
while (cursor.moveToNext()) {
Log.e("after updte ansID", "" + cursor.getString(0));
Log.e(" after updte isselect", "" +
Boolean.parseBoolean(cursor.getString(3)));
}
}
});
Это мой AnswerHelperDBкласс для SQLite
public class AnswerHelperSqlite {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "answer.db";
private static final String TABLE_NAME = "tbanswer";
public static final String ANSWER_ID = "id";
public static final String ANSWER = "answer";
public static final String ANSWER_TYPE = "type";
public static final String ANSWER_VALUE = "value";
public static final String SURVEY_STEP_ID = "surveyStepId";
public static final String IS_SELECT = "isSelected";
private Answer openHelper;
private SQLiteDatabase database;
public AnswerHelperSqlite(Context context) {
openHelper = new Answer(context);
database = openHelper.getWritableDatabase();
}
public void saveCategoryRecord(int id, String answer, int surveyId, int
isSelect) {
ContentValues contentValues = new ContentValues();
contentValues.put(ANSWER_ID, id);
contentValues.put(ANSWER, answer);
contentValues.put(SURVEY_STEP_ID, surveyId);
contentValues.put(IS_SELECT, isSelect);
database.insert(TABLE_NAME, null, contentValues);
}
public int updateValue(int ansId, int isSelect) {
Log.e("update isselect", "" + isSelect);
Log.e("update id", "" + ansId);
ContentValues values = new ContentValues();
values.put(IS_SELECT, isSelect);
return database.update(TABLE_NAME, values, "id = ?", new String[]
{String.valueOf(ansId)});
}
public Cursor getISselectById(String surveyID) {
String[] surveyIDs = {surveyID};
return database.query(true, TABLE_NAME, new String[]{
IS_SELECT},
SURVEY_STEP_ID + "=?",
new String[]{surveyID},
null, null, null, null);
}
public Cursor getTimeRecordList() {
return database.rawQuery("select * from " + TABLE_NAME, null);
}
private class Answer extends SQLiteOpenHelper {
public Answer(Context context) {
// TODO Auto-generated constructor stub
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + TABLE_NAME + "( " + ANSWER_ID + "
INTEGER,"
+ ANSWER + " TEXT,"
+ SURVEY_STEP_ID + " INTEGER,"
+ IS_SELECT + " INTEGER )");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
}