mirror of
https://github.com/k0shk0sh/FastHub.git
synced 2025-12-08 19:05:54 +00:00
Previously used a `while` loop, which can cause delays if you have a lot of notification. This improves upon that. Also, less code!
65 lines
2.7 KiB
Java
65 lines
2.7 KiB
Java
package com.fastaccess.ui.adapter;
|
|
|
|
import android.support.annotation.NonNull;
|
|
import android.support.v7.widget.StaggeredGridLayoutManager;
|
|
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.FontTextView;
|
|
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())
|
|
((FontTextView)((NotificationsHeaderViewHolder) holder).itemView).
|
|
setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear_all, 0);
|
|
} 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();
|
|
}
|
|
}
|