
Что я сделал:
- Код для сохранения значений с помощью SQLiteHelper
Код: Выделить всё
public class cbDB extends SQLiteOpenHelper { private static int DB_VERSION = 1; private static String DATABASE_NAME = "forcbDB"; private static String TABLE_NAME = "cbTable"; //text n cb table public static String KEY_ID = "id"; public static String KR_VER = "krVer"; public static String CB_STATUS = "cbStatus"; private static String CREATE_TABLE= "CREATE TABLE " + TABLE_NAME + " (" + KEY_ID + " TEXT," + KR_VER + " TEXT," + CB_STATUS + " TEXT)"; public cbDB(Context context) { super(context, DATABASE_NAME, null, DB_VERSION);} @Override public void onCreate(SQLiteDatabase sqLiteDatabase) {sqLiteDatabase.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } //create empty table public void insertEmpty(){ SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); //my value for checkbox ?! for (int x = 1; x < 11; x++){ cv.put(KEY_ID, x); cv.put(CB_STATUS, "0"); long newRowId = db.insert(TABLE_NAME, null, cv); } } //insert data into database public void insertIntoTheDatabase(String krVer, String id, String cb_status){ SQLiteDatabase db; db = this.getWritableDatabase();ContentValues cv = new ContentValues(); cv.put(KR_VER, krVer); cv.put(KEY_ID, id); cv.put(CB_STATUS, cb_status); long newRowId = db.insert(TABLE_NAME, null, cv); Log.d("cbDB Status" , krVer + ", cbstatus — "+cb_status+" — . " + cv); //read all data public Cursor read_all_data(String id) { SQLiteDatabase db = this.getReadableDatabase(); String sql = "select * from " + TABLE_NAME + " where " + KEY_ID+"="+id+""; return db.rawQuery(sql, null, null); } //remove line from database public void remove_cb(String id) { SQLiteDatabase db = this.getWritableDatabase(); String sql = "UPDATE " + TABLE_NAME + " SET " + CB_STATUS+" ='0' WHERE "+KEY_ID+"="+id+""; db.execSQL(sql); Log.d("remove", id.toString()); } //select all cb list public Cursor select_all_cb_list() { SQLiteDatabase db = this.getReadableDatabase(); String sql = "SELECT * FROM " + TABLE_NAME + " WHERE "+ CB_STATUS+" ='1'"; return db.rawQuery(sql,null,null); } } - Код SQLite в адаптере
Код: Выделить всё
public class n_adapter extends RecyclerView.Adapter { private final ArrayList krlist; private Intent intent; private Context context; private cbDB cbDB; public n_adapter(ArrayList krlist) { this.krlist = krlist; this.context = context; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); View view = layoutInflater.inflate(R.layout.kr_view,parent,false); cbDB = new cbDB(context); //create table on first SharedPreferences prefers = context.getSharedPreferences("prefers", Context.MODE_PRIVATE); boolean firstStart = prefers.getBoolean("firstStart", true); if (firstStart) { createTableOnFirstStart(); } return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") int position) { holder.textView.setText(krlist.get(position).getKr_ver()); holder.textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intent = new Intent(v.getContext(),beginner_n_use_jp.class); intent.putExtra("number",position); v.getContext().startActivity(intent); } }); final kr_style kr_style = krlist.get(position); holder.chk_box.setOnCheckedChangeListener(null); holder.chk_box.setChecked(kr_style.getSelected()); holder.chk_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { kr_style.setSelected(isChecked); } }); readCursorData(kr_style, holder); holder.textView.setText(kr_style.getKr_ver()); } @Override public int getItemCount() {return krlist.size();} public Object getItem(int position){return krlist.get(position);} public class ViewHolder extends RecyclerView.ViewHolder{ public TextView textView; public CheckBox chk_box; public ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.kr_ver); chk_box = itemView.findViewById(R.id.chk_box); //add to cb chk_box.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = getAdapterPosition(); kr_style kr_style = krlist.get(position); if (kr_style.getCbStatus().equals("0")) { kr_style.setCbStatus("1"); cbDB.insertIntoTheDatabase(kr_style.getKr_ver(), kr_style.getKey_id(), kr_style.getCbStatus()); chk_box.setBackgroundResource(R.drawable.chked_box); } else { kr_style.setCbStatus("0"); cbDB.remove_cb(kr_style.getKey_id()); chk_box.setBackgroundResource(R.drawable.empty_box); } } }); } } private void createTableOnFirstStart() { cbDB.insertEmpty(); SharedPreferences prefers = context.getSharedPreferences("prefers", Context.MODE_PRIVATE); SharedPreferences.Editor editor = prefers.edit(); editor.putBoolean("firstStart", false); editor.apply(); } private void readCursorData(kr_style kr_style, ViewHolder viewHolder) { Cursor cursor = cbDB.read_all_data(kr_style.getKey_id()); SQLiteDatabase db = cbDB.getReadableDatabase(); try { while (cursor.moveToNext()) { @SuppressLint("Range") String item_cb_status = cursor.getString(cursor.getColumnIndex(cbDB.CB_STATUS)); kr_style.setCbStatus(item_cb_status); //check cb status if (item_cb_status != null && item_cb_status.equals("1")) { viewHolder.chk_box.setBackgroundResource(R.drawable.chked_box); } else if (item_cb_status != null && item_cb_status.equals("0")) { viewHolder.chk_box.setBackgroundResource(R.drawable.empty_box); } } } finally { if (cursor != null && cursor.isClosed()) cursor.close(); db.close(); } } } - Код элемента
Код: Выделить всё
public class kr_style { private String kr_ver; public kr_style(String kr_ver) { this.kr_ver = kr_ver; } public String getKr_ver() { return kr_ver; } public void setKr_ver(String kr_ver) { this.kr_ver = kr_ver; } public boolean getSelected; boolean isSelected; public boolean getSelected() { return isSelected; } public void setSelected(boolean selected) { isSelected = selected; } } private String key_id; private String cbStatus; public kr_style() { } public kr_style(String key_id, String cbStatus) { this.key_id = key_id; this.cbStatus = cbStatus; } public String getKey_id() { return key_id; } public void setKey_id(String key_id) { this.key_id = key_id; } public String getCbStatus() { return cbStatus; } public void setCbStatus(String cbStatus) { this.cbStatus = cbStatus; }
Код: Выделить всё
public class beginner_n_use extends AppCompatActivity {
public RecyclerView recyclerView;
ArrayList krlist;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recycler_view);
recyclerView = findViewById(R.id.rc_view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(new n_adapter(insertlist()));
}
ArrayList insertlist() {
krlist = new ArrayList();
kr_style list1 = new kr_style("A");
kr_style list2 = new kr_style("B");
kr_style list3 = new kr_style("C");
kr_style list4 = new kr_style("D");
kr_style list5 = new kr_style("E");
kr_style list6 = new kr_style("F");
kr_style list7 = new kr_style("G");
kr_style list8 = new kr_style("AAA");
kr_style list9 = new kr_style("BBB");
kr_style list10 = new kr_style("CCC");
kr_style list11 = new kr_style("DDD");
kr_style list12 = new kr_style("EEE");
kr_style list13 = new kr_style("FFF");
kr_style list14 = new kr_style("GGG");
kr_style list15 = new kr_style("HHH");
kr_style list16 = new kr_style("III");
kr_style list17 = new kr_style("JJJ");
kr_style list18 = new kr_style("KKK");
kr_style list19 = new kr_style("LLL");
kr_style list20 = new kr_style("MMM");
krlist.add(list1);krlist.add(list2);krlist.add(list3);krlist.add(list4);krlist.add(list5);
krlist.add(list6);krlist.add(list7);krlist.add(list8);krlist.add(list9);krlist.add(list10);
krlist.add(list11);krlist.add(list12);krlist.add(list13);krlist.add(list14);krlist.add(list15);
krlist.add(list16);krlist.add(list17);krlist.add(list18);krlist.add(list19);krlist.add(list20);
return krlist;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ith-sqlite