package org.cnodejs.android.md.ui.activity; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import org.cnodejs.android.md.R; import org.cnodejs.android.md.model.entity.Notification; import org.cnodejs.android.md.presenter.contract.INotificationPresenter; import org.cnodejs.android.md.presenter.implement.NotificationPresenter; import org.cnodejs.android.md.ui.adapter.MessageListAdapter; import org.cnodejs.android.md.ui.base.StatusBarActivity; import org.cnodejs.android.md.ui.listener.DoubleClickBackToContentTopListener; import org.cnodejs.android.md.ui.listener.NavigationFinishClickListener; import org.cnodejs.android.md.ui.util.RefreshUtils; import org.cnodejs.android.md.ui.util.ThemeUtils; import org.cnodejs.android.md.ui.view.IBackToContentTopView; import org.cnodejs.android.md.ui.view.INotificationView; import butterknife.BindView; import butterknife.ButterKnife; public class NotificationActivity extends StatusBarActivity implements INotificationView, IBackToContentTopView, Toolbar.OnMenuItemClickListener, SwipeRefreshLayout.OnRefreshListener { @BindView(R.id.toolbar) protected Toolbar toolbar; @BindView(R.id.refresh_layout) protected SwipeRefreshLayout refreshLayout; @BindView(R.id.recycler_view) protected RecyclerView recyclerView; @BindView(R.id.icon_no_data) protected View iconNoData; private MessageListAdapter adapter; private INotificationPresenter notificationPresenter; @Override protected void onCreate(Bundle savedInstanceState) { ThemeUtils.configThemeBeforeOnCreate(this, R.style.AppThemeLight, R.style.AppThemeDark); super.onCreate(savedInstanceState); setContentView(R.layout.activity_notification); ButterKnife.bind(this); toolbar.setNavigationOnClickListener(new NavigationFinishClickListener(this)); toolbar.inflateMenu(R.menu.notification); toolbar.setOnMenuItemClickListener(this); toolbar.setOnClickListener(new DoubleClickBackToContentTopListener(this)); recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new MessageListAdapter(this); recyclerView.setAdapter(adapter); notificationPresenter = new NotificationPresenter(this, this); RefreshUtils.init(refreshLayout, this); RefreshUtils.refresh(refreshLayout, this); } @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_done_all: notificationPresenter.markAllMessageReadAsyncTask(); return true; default: return false; } } @Override public void onRefresh() { notificationPresenter.getMessagesAsyncTask(); } @Override public void onGetMessagesOk(@NonNull Notification notification) { adapter.getMessageList().clear(); adapter.getMessageList().addAll(notification.getHasNotReadMessageList()); adapter.getMessageList().addAll(notification.getHasReadMessageList()); adapter.notifyDataSetChanged(); iconNoData.setVisibility(adapter.getMessageList().isEmpty() ? View.VISIBLE : View.GONE); } @Override public void onGetMessagesFinish() { refreshLayout.setRefreshing(false); } @Override public void onMarkAllMessageReadOk() { adapter.markAllMessageRead(); adapter.notifyDataSetChanged(); } @Override public void backToContentTop() { recyclerView.scrollToPosition(0); } }