package com.fastaccess.ui.adapter; import android.support.annotation.NonNull; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.view.ViewGroup; import com.fastaccess.R; import com.fastaccess.data.dao.GroupedNotificationModel; import com.fastaccess.ui.adapter.viewholder.NotificationsHeaderViewHolder; import com.fastaccess.ui.adapter.viewholder.NotificationsViewHolder; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import java.util.ArrayList; /** * Created by Kosh on 11 Nov 2016, 2:07 PM */ public class NotificationsAdapter extends BaseRecyclerAdapter<GroupedNotificationModel, BaseViewHolder, BaseViewHolder.OnItemClickListener<GroupedNotificationModel>> { private boolean showUnreadState; private boolean hideClear; public NotificationsAdapter(@NonNull ArrayList<GroupedNotificationModel> eventsModels, boolean showUnreadState) { super(eventsModels); this.showUnreadState = showUnreadState; } public NotificationsAdapter(@NonNull ArrayList<GroupedNotificationModel> eventsModels, boolean showUnreadState, boolean hideClear) { super(eventsModels); this.showUnreadState = showUnreadState; this.hideClear = hideClear; } @Override protected BaseViewHolder viewHolder(ViewGroup parent, int viewType) { if (viewType == GroupedNotificationModel.HEADER) { return NotificationsHeaderViewHolder.newInstance(parent, this); } else { return NotificationsViewHolder.newInstance(parent, this, showUnreadState); } } @Override protected void onBindView(BaseViewHolder holder, int position) { if (getItemViewType(position) == GroupedNotificationModel.HEADER) { ((NotificationsHeaderViewHolder) holder).bind(getItem(position)); if (hideClear) if (getItem(Math.min(position + 1, getItemCount() - 1)).getNotification().isUnread()) { (((NotificationsHeaderViewHolder) holder).itemView).findViewById(R.id.markAsRead).setVisibility(View.VISIBLE); } } else { ((NotificationsViewHolder) holder).bind(getItem(position)); } if (getItem(position).getType() == GroupedNotificationModel.HEADER) { StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); layoutParams.setFullSpan(true); } } @Override public int getItemViewType(int position) { return getItem(position).getType(); } }