У меня есть одно приложение, в котором изначально я вставляю параметр для цвета шрифта и размера шрифта вручную и, получая эти данные в adpater путем чтения базы данных, я смог внести изменения в размер шрифта и цвет шрифта элементов списка.
Важный код:
метод вставки помощника:
public boolean insertData(ContactModel contactModel) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
// contentValues.put(col_0,contactModel.getId());
contentValues.put(col_1,contactModel.getName());
contentValues.put(col_2,contactModel.getNumber());
contentValues.put(col_3,contactModel.getColor());
contentValues.put(col_4,contactModel.getFSize());
contentValues.put(col_5,contactModel.getDataIndex());
// long result =db.insert(Table_name,null,contentValues);
long result = db.insertWithOnConflict(Table_name, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);
if(result == -1){
return false;
}else{
return true;
}
}
метод вставки данных:
public void tempinsert(String name,String num,String color,int size,int index){
boolean inSamedata=tempSqliteDatabaseHelper.IsItemExist(name,num);
if(inSamedata==false){
boolean indata = tempSqliteDatabaseHelper.insertData(new ContactModel(name,num,color,size,index));
if (indata == true) {
Log.e("DataSave","DataSave");
}
else{
Log.e("In_Data_not_True","In Data not True");
}
}else if(inSamedata==true){
Log.e("Record_Exist","Record Exist");
}
}
Вызов вышеуказанного метода:
tempinsert(getDisplayName(),getPhNumber(),"#2d2d2d",35,1);
Как видите, я статически вставляю цвет и размер шрифта.
Код внутри onBindАдаптер метода для внесения изменений в элемент списка:
@Override
public void onBindViewHolder(@NonNull MyContactHolder myContactHolder, int i) {
myContactHolder.Name.setText(customDataListModels.get(i).getName());
myContactHolder.Number.setText(customDataListModels.get(i).getNumber());
Log.e("poistionAdapter:", String.valueOf(myContactHolder.getPosition()));
Cursor cursor = tempSqliteDatabaseHelper.getAllData();
if (cursor.getCount() == 0) {
Toast.makeText(mcontext.getApplicationContext(), "No Contact Selected", Toast.LENGTH_SHORT).show();
return;
}
while (cursor.moveToNext()) {
Integer SFontsize=cursor.getInt(4);
String SColor=cursor.getString(3);
myContactHolder.Name.setTextColor(Color.parseColor(cursor.getString(3)));
myContactHolder.Name.setTextSize(SFontsize);
Log.d("Font_Size", String.valueOf(SFontsize));
Log.d("Font_color", String.valueOf(SColor));
}
}
Здесь внутри журнала я получаю то же значение, что и вставленный, Все хорошо до этого момента, Проблема возникает после того, как я обновляю fontsize и fontcolor в базе данных. После обновления я могу получить обновленный размер шрифта / цвет в журнале, но всякий раз, когда мне дают значение
myContactHolder.Name.setTextColor(Color.parseColor(cursor.getString(3)));
myContactHolder.Name.setTextSize(SFontsize);
Textview не обновляет свой размер шрифта и цвет в соответствии с обновлением, Забавная вещь для cursor.getString (3) и SFontsize, я получаю обновленное значение. Если вы запросили какой-либо другой код, чтобы понять мой проблемный пост в комментарии.