@Ser_blyat

Android Studio как обновить ListView после обновления БД в курсоре по нажатию на кнопку?

Это кусок кода фрагмента со списком, есть кнопка btnStopAllTask меняет статус задачи. Все работает нормально и список обновляется(знаю почему, просто каждый раз пересоздается адаптер).
Button btnStopAllTask = (Button) view.findViewById(R.id.buttonStopAllTask);
        btnStopAllTask.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                contentValues.put(DBHelper.STATUS, statusOff);
                database.update(DBHelper.TABLE_TASKS, contentValues, DBHelper.STATUS
                        + "=" + String.valueOf(statusStart), null);
                onResume();
            }
        });

        //final View viewTimer = getLayoutInflater().inflate(R.layout.timer, null);

        return view;

    }


    public void onResume() {
        super.onResume();

        dbHelper = new DBHelper(getContext());
        database = dbHelper.getReadableDatabase();

        userCursor = database.rawQuery("select * from " + DBHelper.TABLE_TASKS + " where "
                + DBHelper.STATUS + "=?", new String[]{String.valueOf(statusStart)});
        userCursor.moveToNext();
        String[] headers = new String[]{DBHelper.NAME, DBHelper.DURATION_TASK};
        adapter = new CustomCursorAdapter(getContext(), R.layout.timer, userCursor, headers,
                new int[]{R.id.textViewNameTask, R.id.textViewWithTimer}, 0);
        lvWithTaskIsRunningNow.setAdapter(adapter);
        adapter.notifyDataSetChanged();


    }


    public void onDestroy() {
        super.onDestroy();
        database.close();
        userCursor.close();
    }

Это часть кода адаптера кастомного (public class CustomCursorAdapter extends SimpleCursorAdapter)
Если запускать через интент то оно работает, но постоянный перезапуск активити бесит(мигает+ задержка)
Подскажите плез. как динамически обновлять список после нажатия кнопки(кнопки обрабатываются в адаптере )??
public void bindView(View view, final Context _context, final Cursor _cursor) {
        super.bindView(view,_context,_cursor);
        TextView tvWithNameTask = (TextView) view.findViewById(R.id.textViewNameTask);
        TextView  tvWithTimer= (TextView) view.findViewById(R.id.textViewWithTimer);
        ImageButton btnStop = (ImageButton) view.findViewById(R.id.imageButtonStop);
        ImageButton btnStart= (ImageButton) view.findViewById(R.id.imageButtonStart);
        ImageButton btnPause= (ImageButton) view.findViewById(R.id.imageButtonPause);

        contentValues = new ContentValues();
        dbHelper = new DBHelper(_context);
        database = dbHelper.getWritableDatabase();

        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int keyId = _cursor.getInt(_cursor.getColumnIndex(DBHelper.KEY_ID));
                contentValues.put(DBHelper.STATUS, IsRunningNow.statusOff);
                database.update(DBHelper.TABLE_TASKS, contentValues, DBHelper.KEY_ID
                        + "=" + String.valueOf(keyId), null);

                //swapCursor(_cursor);

               /* Intent intent = new Intent(_context, MainActivity.class);
                _context.startActivity(intent);*/
            }
        });
  • Вопрос задан
  • 345 просмотров
Пригласить эксперта
Ответы на вопрос 1
gadfi
@gadfi
https://gamega.org
Если используете listview то рекомендую посомтерть в сторону ContentProvider
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы