My app contains a ListView
in an activity and a BroadcastReceiver
. I would like my Broadcastreceiver
to refresh the ListView
when it is triggered. My receiver puts content into an sqlite DB and my listview
displays the content of that DB.
Activity with ListView:
lv=(ListView) findViewById(R.id.conversation);
lv.setSelection(lv.getCount()-1);
lv.setAdapter(new mAdapter(this, srsList, messagesList, timesList, numbersList, idList));
registerForContextMenu(lv);
BroadcastReceiver:
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
//values.put(Messages.KEY_ID, i1);
values.put(Messages.KEY_sr, "r");
values.put(Messages.KEY_message, message);
values.put(Messages.KEY_time, datetime);
values.put(Messages.KEY_number, sen);
// Inserting Row
long student_Id = db.insert(Messages.TABLE, null, values);
db.close(); // Closing database connection
You can create a BroadcastReciever in your activity which holds the adapter and notify that the the adapter should be refreshed :
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
// String message = intent.getStringExtra("message");
if (mAdapter!= null) {
mAdapter.notifyDataSetChanged();
}
}
};
Reigester this BroadcastReciever in onResume:
this.registerReceiver(mMessageReceiver, new IntentFilter("some_unique_name"));
And unregiester onPause:
this.unregisterReceiver(mMessageReceiver);
In your BroadcastReciever just use:
private void updateYourActivity(Context context) {
Intent intent = new Intent("some_unique_name");
// put whatever data you want to send, if any
// intent.putExtra("message", message);
// send broadcast
context.sendBroadcast(intent);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.