package com.gzsll.hupu.ui.forum;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.daimajia.swipe.SwipeLayout;
import com.facebook.drawee.view.SimpleDraweeView;
import com.gzsll.hupu.R;
import com.gzsll.hupu.db.Forum;
import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersAdapter;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by sll on 2016/3/11.
*/
public class ForumListAdapter extends RecyclerView.Adapter<ForumListAdapter.ViewHolder>
implements StickyRecyclerHeadersAdapter<ForumListAdapter.HeaderViewHolder> {
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
void onForumDelAttentionClick(Forum forum);
void onForumOfflineClick(Forum forum);
void onForumClick(Forum forum);
}
private List<Forum> forums = new ArrayList<>();
private OnItemClickListener onItemClickListener;
@Inject
public ForumListAdapter() {
}
public void bind(List<Forum> forums) {
this.forums = forums;
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(
LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_forum, parent, false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Forum forum = forums.get(position);
holder.forum = forum;
if (!TextUtils.isEmpty(forum.getLogo())) {
holder.ivIcon.setImageURI(Uri.parse(forum.getLogo()));
}
holder.tvName.setText(forum.getName());
holder.swipeLayout.setSwipeEnabled(forum.getForumId().equals("0"));
}
@Override
public long getHeaderId(int position) {
return forums.get(position).getWeight();
}
@Override
public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent) {
return new HeaderViewHolder(
LayoutInflater.from(parent.getContext()).inflate(R.layout.category_header, parent, false));
}
@Override
public void onBindHeaderViewHolder(HeaderViewHolder holder, int position) {
holder.tvCategoryName.setText(forums.get(position).getCategoryName());
}
@Override
public int getItemCount() {
return forums.size();
}
public void remove(Forum forum) {
forums.remove(forum);
notifyDataSetChanged();
}
class HeaderViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tvCategoryName)
TextView tvCategoryName;
public HeaderViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.ivIcon)
SimpleDraweeView ivIcon;
@BindView(R.id.tvName)
TextView tvName;
@BindView(R.id.swipeLayout)
SwipeLayout swipeLayout;
Forum forum;
@OnClick(R.id.swipeLayout)
void swipeLayoutClick() {
if (swipeLayout.getOpenStatus() == SwipeLayout.Status.Close) {
if (onItemClickListener != null) {
onItemClickListener.onForumClick(forum);
}
}
}
@OnClick(R.id.tvDel)
void tvDelClick() {
swipeLayout.close();
if (onItemClickListener != null) {
onItemClickListener.onForumDelAttentionClick(forum);
}
}
@OnClick(R.id.tvOffline)
void tvOfflineClick() {
swipeLayout.close();
if (onItemClickListener != null) {
onItemClickListener.onForumOfflineClick(forum);
}
}
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}