как я могу обновить вид списка SimpleCursorAdapter из класса ExampleReciver extends BroadcastReceiver

я недавно занимаюсь программированием прошу строго не судить. Прошу любой помощи. Не могу понять как обновить SimpleCursorAdapter. вот мой класс Activity

public class AlarmManagerActivity extends Activity {
    private static String CHANNEL_ID = "Cat channel";
    private static final int CM_DELETE_ID = 1;
    int den;
    SharedPreferences sPref;
    SimpleCursorAdapter scAdapter1;
    ListView lvData2;
    private AlarmManagerBroadcastReceiver alarm;
    SQLiteDatabase db;
    Cursor updatedCursor;
    DatabaseHelper databaseHelper;
    boolean iteM;

    final String SAVED_TEXT = "saved_text";
    private static final int LOADER_ID = 225;
    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        alarm = new AlarmManagerBroadcastReceiver();
        Context context = this.getApplicationContext();
        databaseHelper = new DatabaseHelper(context);
        // создаем базу данных
        databaseHelper.create_db();
        db = databaseHelper.open();
        lvData2 = (ListView) findViewById(R.id.lv);
       // loadText();
       // saveText(true);
        startRepeatingTimer();
       // getLoaderManager().initLoader(LOADER_ID, null, this);


        updatedCursor = db.query(TABLE2, null, null, null, null, null, null);

        String[] from1 = new String[] {DatabaseHelper.COLUMN_YEAR2, DatabaseHelper.COLUMN_NAME2};
        int[] to1 = new int[] { R.id.tvData,R.id.tvName};
        scAdapter1 = new SimpleCursorAdapter(this, R.layout.item, updatedCursor, from1, to1,2);


        lvData2.setAdapter(scAdapter1);
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData2);
    }

и есть класс ExampleReciver extends BroadcastReceiver

public class ExampleReciver extends BroadcastReceiver {
    SQLiteDatabase db;

    DatabaseHelper databaseHelper;
    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.

        AlarmManagerBroadcastReceiver BR = new AlarmManagerBroadcastReceiver();
        databaseHelper = new DatabaseHelper(context);
        // создаем базу данных
        databaseHelper.create_db();
        db = databaseHelper.open();
        db.delete(DatabaseHelper.TABLE2, "Date1 = ?", new String[]{String.valueOf(BR.calendar())});
        Cursor updatedCursor = db.query(TABLE2, null, null, null, null, null, null);
        updatedCursor.moveToFirst();
        BR.names(context);

       //AlarmManagerActivity AM = new AlarmManagerActivity();
      //AM.updateListView();

        db.close();




//        throw new UnsupportedOperationException("Not yet implemented");
    }
}

вопрос: как обновить SimpleCursorAdapter при удалении данных из таблицы SQLite?


Ответы (1 шт):

Автор решения: Дмитрий Решетников
public class AlarmManagerActivity extends Activity {
    private static String CHANNEL_ID = "Cat channel";
    private static final int CM_DELETE_ID = 1;
    int den;
    SharedPreferences sPref;
    SimpleCursorAdapter scAdapter1;
    ListView lvData2;
    private AlarmManagerBroadcastReceiver alarm;
    SQLiteDatabase db;
    Cursor updatedCursor;
    DatabaseHelper databaseHelper;
    boolean iteM;

    BroadcastReceiver updateUIReciver;

    final String SAVED_TEXT = "saved_text";
    private static final int LOADER_ID = 225;
    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        alarm = new AlarmManagerBroadcastReceiver();
        Context context = this.getApplicationContext();
        databaseHelper = new DatabaseHelper(context);
        // создаем базу данных
        databaseHelper.create_db();
        db = databaseHelper.open();
        lvData2 = (ListView) findViewById(R.id.lv);
       // loadText();
       // saveText(true);
        startRepeatingTimer();
       // getLoaderManager().initLoader(LOADER_ID, null, this);

        IntentFilter filter = new IntentFilter();
        filter.addAction("service.to.activity.transfer");
        updateUIReciver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                //UI update here
                if (intent != null)
                    //Toast.makeText(context, intent.getStringExtra("number").toString(), Toast.LENGTH_LONG).show();
                updateListView(context);
            }
        };
        registerReceiver(updateUIReciver, filter);



        updatedCursor = db.query(TABLE2, null, null, null, null, null, null);

        String[] from1 = new String[] {DatabaseHelper.COLUMN_YEAR2, DatabaseHelper.COLUMN_NAME2};
        int[] to1 = new int[] { R.id.tvData,R.id.tvName};
       // scAdapter1 = new SimpleCursorAdapter(this, R.layout.item, updatedCursor, from1, to1,2);
        scAdapter1 = new Adapter(this,R.layout.item,updatedCursor,from1,to1,2);
        ListView lvData2 = (ListView) findViewById(R.id.lv);
        lvData2.setItemsCanFocus(true);
        final View item = getLayoutInflater().inflate(R.layout.item,null);
        Button yourButton = (Button) item.findViewById(R.id.button);
        //lvData.setAdapter(scAdapter);

        lvData2.setAdapter(scAdapter1);
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData2);
    }
    protected void updateListView(Context context){
//        Context context = this.getApplicationContext();

       databaseHelper = new DatabaseHelper(context);
        // создаем базу данных
        databaseHelper.create_db();
        db = databaseHelper.open();
       //Cursor cursor = db.query(TABLE2, null, null, null, null, null, null);
//userCursor.requery();
        updatedCursor = db.query(TABLE2, null, null, null, null, null, null);
        //updatedCursor.moveToFirst();
        Log.d("updatedCursor", String.valueOf(updatedCursor));
        scAdapter1.changeCursor(updatedCursor);



    }
public class ExampleReciver extends BroadcastReceiver {
    SQLiteDatabase db;

    DatabaseHelper databaseHelper;

    public static final String WHERE_MY_CAT_ACTION = "ru.alexanderklimov.action.CAT";
    public static final String ALARM_MESSAGE = "Срочно пришлите кота!";


    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        // an Intent broadcast.

        AlarmManagerBroadcastReceiver BR = new AlarmManagerBroadcastReceiver();
        databaseHelper = new DatabaseHelper(context);
        // создаем базу данных
        databaseHelper.create_db();
        db = databaseHelper.open();
        db.delete(DatabaseHelper.TABLE2, "Date1 = ?", new String[]{String.valueOf(BR.calendar())});
        Cursor updatedCursor = db.query(TABLE2, null, null, null, null, null, null);
        updatedCursor.moveToFirst();
        BR.names(context);




                Intent local = new Intent();
                local.setAction("service.to.activity.transfer");
                local.putExtra("number", "555");
                context.sendBroadcast(local);



        db.close();




//        throw new UnsupportedOperationException("Not yet implemented");
    }

}
→ Ссылка