FastHub/app/src/main/java/com/fastaccess/ui/adapter/NotificationsAdapter.java
Jedi Burrell 7ad33aae58 Improve Issue #406 Patch.
Previously used a `while` loop, which can cause delays if you have a lot
of notification. This improves upon that.

Also, less code!
2017-05-11 21:54:42 -04:00

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