/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.broadcast.ui;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.network.api.info.apiv2.Broadcast;
import me.zhanghai.android.douya.util.ViewUtils;
public class SingleBroadcastAdapter
extends RecyclerView.Adapter<SingleBroadcastAdapter.ViewHolder> {
private Listener mListener;
private Broadcast mBroadcast;
public SingleBroadcastAdapter(Broadcast broadcast, Listener listener) {
mBroadcast = broadcast;
mListener = listener;
setHasStableIds(true);
}
public Broadcast getBroadcast() {
return mBroadcast;
}
public boolean hasBroadcast() {
return mBroadcast != null;
}
public void setBroadcast(Broadcast broadcast) {
// Don't check for whether mBroadcast == broadcast because we always want to invalidate.
Broadcast oldBroadcast = mBroadcast;
mBroadcast = broadcast;
if (oldBroadcast == null) {
notifyItemInserted(0);
} else if (mBroadcast == null) {
notifyItemRemoved(0);
} else {
notifyItemChanged(0);
}
}
public void notifyBroadcastChanged() {
notifyItemChanged(0);
}
@Override
public int getItemCount() {
return mBroadcast != null ? 1 : 0;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(ViewUtils.inflate(R.layout.single_broadcast_item, parent));
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
final Broadcast broadcast = mBroadcast;
holder.broadcastLayout.bindBroadcast(broadcast);
holder.broadcastLayout.setListener(new BroadcastLayout.Listener() {
@Override
public void onLikeClicked() {
mListener.onLike(broadcast, !broadcast.isLiked);
}
@Override
public void onRebroadcastClicked() {
mListener.onRebroadcast(broadcast, !broadcast.isRebroadcasted());
}
@Override
public void onCommentClicked() {
mListener.onComment(broadcast);
}
});
holder.viewActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mListener.onViewActivity(broadcast);
}
});
}
@Override
public void onViewRecycled(ViewHolder holder) {
holder.broadcastLayout.releaseBroadcast();
}
public interface Listener {
void onLike(Broadcast broadcast, boolean like);
void onRebroadcast(Broadcast broadcast, boolean rebroadcast);
void onComment(Broadcast broadcast);
void onViewActivity(Broadcast broadcast);
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.broadcast)
public BroadcastLayout broadcastLayout;
@BindView(R.id.view_activity)
public Button viewActivityButton;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}