Navigationdrawer 视图在打开时不刷新

Navigationdrawer view not refreshed when open

我有一个包含通知列表的应用程序。 通知列在导航抽屉中。 (即当用户点击汉堡包图标时,打开的通知列表被打开)。 导航抽屉本身是 swipeRefreshLayout 中的列表视图,就像您在以下代码中看到的那样(用户必须将其下拉以刷新通知):

<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);
        }
    }
};

这部分代码应在创建通知时刷新视图(或发送,如果它是离线创建的)。

当我现在发送离线创建的通知并在打开导航抽屉之前稍等片刻时,视图已更新并且通知被标记为已发送。 所以这工作正常。

现在问题: 当我发送一个离线创建的通知并在通知发送后直接打开导航抽屉时,列表视图没有更新并且通知仍然标记为未发送(但是当我打开通知时,它被标记为发送)。

是同步问题还是我做错了什么? 开不开应该没什么区别吧?

您应该通过这种方式更新导航抽屉中的列表视图

public void updateView(int index) {

    if (mDrawerList != null) {

        View v = mDrawerList.getChildAt(index -

                mDrawerList.getFirstVisiblePosition());

        if (v == null)
            return;
        ListView lv= (TextView) v.findViewById(R.id.left_drawer); //update your data here

    }

}