У меня есть приложение, которое содержит список уведомлений. Уведомления перечислены в навигационном устройстве. (т. Е. Когда пользователь нажимает значок гамбургера, открывается список открытых уведомлений). Навигационные сам ящик является ListView в swipeRefreshLayout, как вы можете видеть в следующем коде (пользователь должен тянуть его вниз, чтобы обновить уведомления):Вид Navigationdrawer не обновляется, когда открыт
<LinearLayout
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:gravity="bottom|center"
android:orientation="vertical">
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffff"
android:choiceMode="singleChoice"
android:divider="@android:color/darker_gray"
android:dividerHeight="0dp" />
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
До сих пор все работает, как ожидалось. Теперь мне пришлось реализовать сценарий для загрузки автономных уведомлений. В моей службы я отправить сообщение обновления широковещательного, который извлекается с помощью навигационной панели с помощью следующего кода (все равно придется очистить его немного):
private static BroadcastReceiver messageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("message");
//TODO make message for notification service
if(!LocationService.REFRESH_LOCATION_ACTION_MESSAGE.equals(message)) {
Log.i(TAG, "Got message: " + message);
notifications.clear();
notifications.addAll(intent.getParcelableArrayListExtra(NotificationService.NOTIFICATION_LIST_ARGUMENT));
try {
Collections.sort(notifications, new NotificationComparator());
} catch(Exception e){
Log.e(TAG, Log.getStackTraceString(e));
}
Log.d(TAG, "got notifications: " + notifications);
adapter.notifyDataSetChanged();
swipeLayout.setRefreshing(false);
}
}
};
Эта часть кода должна обновить вид когда создается уведомление (или отправляется, если оно было создано в автономном режиме).
Когда я сейчас отправляю автономное созданное уведомление и немного подождаю, прежде чем открывать ящик для навигации, представление обновляется, и уведомление помечено как отправка. Так что это нормально работает.
Теперь вопрос: Когда я отправляю автономное созданное уведомление и открываю навигационный ящик непосредственно после отправки уведомления, просмотр списка не обновляется, и уведомление по-прежнему помечено как не отправленное (но когда я открываю уведомление, оно помечено как отправка).
Есть ли проблема синхронизации или я делаю что-то неправильно здесь? Это не должно иметь значения, если вид открыт или нет, не так ли?
действительно, данные не обновляются в этом сценарии. благодаря –