Я получил db.update () значение 1, но когда я получаю все данные из базы данных, ни одна строка не была затронута в базе данных SQLIte - PullRequest
0 голосов
/ 05 июня 2019

Я хочу обновить значение ответа, когда пользователь выбирает элемент в 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);
    }

}


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...