package ua.kpi.ecampus.ui.adapter;
import android.os.Handler;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.TextView;
import ua.kpi.ecampus.R;
import ua.kpi.ecampus.model.Recipient;
import ua.kpi.ecampus.ui.presenter.SaveBulletinPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* BulletinsRecipientAdapter manages recipient data (profile, subsystem,
* group) and adapts it to RecyclerView, which is in New/Edit BulletinActivity.
* This recycler view contains buffer list of recipients which have not added
* to bulletin's recipient list yet.
* <p>
* Created by Administrator on 17.02.2016.
*/
public class BulletinsRecipientAdapter extends RecyclerView
.Adapter<BulletinsRecipientAdapter.ViewHolder> {
private final SaveBulletinPresenter.IView mView;
private final int NOTIFY_DELAY = 500;
private List<Recipient> mDataList = new ArrayList<>();
public BulletinsRecipientAdapter(SaveBulletinPresenter.IView view) {
mView = view;
}
public void setItems(List<Recipient> list) {
mDataList = list;
mView.updateBadgeCounter(getItemCount());
notifyDataSetChanged();
}
public void clear() {
mDataList = new ArrayList<>();
mView.updateBadgeCounter(getItemCount());
notifyDataSetChanged();
}
public boolean contains(Recipient r) {
return mDataList.contains(r);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout
.recyclerview_buffer_recipient_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
Recipient item = mDataList.get(position);
holder.tvWhere.setText(item.getSubdivisionName());
String profileName = item.getProfileName();
if (profileName != null && !profileName.isEmpty()) {
holder.tvWhom.setText(profileName);
} else if (item.getStudyGroupName() != null) {
holder.tvWhom.setText(item.getStudyGroupName());
}
holder.btnDelete.setOnClickListener(v -> removeItem(position));
}
@Override
public int getItemCount() {
return mDataList.size();
}
public List<Recipient> getItems() {
return mDataList;
}
public void addItem(final Recipient item) {
Handler handler = new Handler();
handler.postDelayed(() -> {
mDataList.add(item);
mView.updateBadgeCounter(getItemCount());
notifyItemInserted(mDataList.size() - 1);
}, NOTIFY_DELAY);
}
public void removeItem(final int position) {
Handler handler = new Handler();
handler.postDelayed(() -> {
mDataList.remove(position);
mView.updateBadgeCounter(getItemCount());
notifyItemRemoved(position);
notifyItemRangeChanged(position, mDataList.size());
}, NOTIFY_DELAY);
}
protected class ViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.tv_where)
TextView tvWhere;
@Bind(R.id.tv_whom)
TextView tvWhom;
@Bind(R.id.button_delete_buffer_recipient)
ImageButton btnDelete;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}