Всем привет. Столкнулся с новой проблемой, которую не могу решить. Мне нужно обновить строку в БД, которая соответсвует данным, пришедшим с сервера. Я получаю массив из N. Каждая единица из этого N имеет тоже свой массив из 8 параметров. Мне нужно обновить значение всего лишь одного параметра, но он должен соответствовать тому item, который я выбрал в ListView (из 8 параметров есть id и есть time; мне по id нужно обновить соответствующее ему time).
Здесь я выбираю нужный мне item
public class ScheduleActivity extends Activity implements AdapterView.OnItemClickListener,
View.OnClickListener {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_schedule_list);
mListBodyAlarmSettings = mDataBase.loadAlarmSettings();
mAdapter = new ScheduleAdapter(this, mListBodyAlarmSettings);
mLvForSchedules.setAdapter(mAdapter);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(this, SettingsListScheduleActivity.class);
intent.putExtra(ALARM_SETTINGS_KEY, mListBodyAlarmSettings.get(position));
intent.putExtra("position", id);
startActivity(intent);
}
После нажатия на item перехожу в окно, где выбираю время
public class SettingsListScheduleActivity extends BaseActivity implements View.OnClickListener {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings_list_schedule);
Intent intent = getIntent();
mBodyAlarmSettings = (BodyAlarmSettings) intent.getSerializableExtra(ScheduleActivity.ALARM_SETTINGS_KEY);
mId = mBodyAlarmSettings.getId();
public void showTimePicker() {
final Calendar calendar = Calendar.getInstance();
final int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
TimePickerDialog.OnTimeSetListener onTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
@SuppressLint({"SetTextI18n", "NewApi"})
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
if (view.isShown()) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
mGetHour = hourOfDay;
mGetMinute = minute;
mAlarmTimeInMinutes = mGetHour * 60 + mGetMinute;
time = mAlarmTimeInMinutes;
action = "update";
// id = mDataBase.loadAlarmId();
postAlarmSettings();
/* BodyAlarmSettings body = new BodyAlarmSettings();
body.setId(mId);
body.setTime(mAlarmTimeInMinutes);
mDataBase.saveTimeForListSchedule(body);
Log.d("Id", "" + mId); */
mBodyAlarmSettings.setTime(mAlarmTimeInMinutes);
mDataBase.updateTimeAlarm(mBodyAlarmSettings);
if (mGetMinute < 10) {
mSelectedTime.setText(String.valueOf(mGetHour) + ":0" + String.valueOf(mGetMinute));
} else {
mSelectedTime.setText(String.valueOf(mGetHour) + ":" + String.valueOf(mGetMinute));
}
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
mIntent = new Intent(getApplicationContext(), AlarmReceiver.class);
myThread.start();
}
}
};
TimePickerDialog timePickerDialog =
new TimePickerDialog(SettingsListScheduleActivity.this,
android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
onTimeSetListener,
hour,
minute,
true);
timePickerDialog.setTitle("Choice your time: ");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Objects.requireNonNull(timePickerDialog
.getWindow())
.setBackgroundDrawableResource(android.R.color.transparent);
}
timePickerDialog.show();
}
А это БД, где я должен изменить данные
public class MainDB extends SQLiteOpenHelper {
private static final String DB_NAME = "BabyGymDB";
private static final int DB_VERSION = 2;
private static final String _id = "_id";
private static final String ID_ALARM = "Id";
private static final String TIME_ALARM = "Time";
private static final String ID_BLOCK_ALARM = "Id_Block";
private static final String TITLE_BLOCK_ALARM = "Block_Title";
private static final String WORKWEEK = "Workweek";
private static final String ACTIVE_CHECKBOX = "Active";
private static final String ID_SOUND = "Id_Sound";
private static final String DURATION_BLOCK = "Duration_Block";
private final String CREATE_ALARM_TABLE = "CREATE TABLE IF NOT EXISTS " +
ALARM_TABLE + "(" +
_id + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ID_ALARM + " TEXT, " +
TIME_ALARM + " INTEGER, " +
ID_BLOCK_ALARM + " INTEGER, " +
TITLE_BLOCK_ALARM + " TEXT, " +
WORKWEEK + " TEXT, " +
ACTIVE_CHECKBOX + " INTEGER, " +
ID_SOUND + " INTEGER, " +
DURATION_BLOCK + " INTEGER" + ");";
public void updateTimeAlarm(BodyAlarmSettings model) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
db.delete(ALARM_TABLE, null, null);
cv.put(ID_ALARM, model.getId());
cv.put(TIME_ALARM, model.getTime());
cv.put(ID_BLOCK_ALARM, model.getIdBlock());
cv.put(TITLE_BLOCK_ALARM, model.getBlockTitle());
cv.put(WORKWEEK, model.getWorkweek());
cv.put(ACTIVE_CHECKBOX, model.getActive());
cv.put(ID_SOUND, model.getIdSound());
cv.put(DURATION_BLOCK, model.getDurationBlock());
db.update(ALARM_TABLE, cv, "Id = ?", new String[]{String.valueOf(ID_ALARM)});
db.close();
}
Код подрезал для краткости - не работает только метод update в БД.
Виртуальный выделенный сервер (VDS) становится отличным выбором
В процессе изучения vk api столкнулся с проблемой, что не могу найти в библиотеке vk-api параметра keyboard в методе messangesend Решил реализовать кнопки...
Я понимаю, что я уже достал вас своими вопросамиЯ начал читать книгу, но 1 момент все равно непонятен
Мне нужно сделать маленький конструкторЧто бы была картинка и на ней ещё несколько маленьких