package name.caiyao.microreader.ui.adapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.DecelerateInterpolator;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import name.caiyao.microreader.R;
import name.caiyao.microreader.bean.zhihu.ZhihuDailyItem;
import name.caiyao.microreader.config.Config;
import name.caiyao.microreader.ui.activity.ZhihuStoryActivity;
import name.caiyao.microreader.utils.DBUtils;
import name.caiyao.microreader.utils.ImageLoader;
import name.caiyao.microreader.utils.ScreenUtil;
/**
* Created by 蔡小木 on 2016/4/29 0029.
*/
public class ZhihuAdapter extends RecyclerView.Adapter<ZhihuAdapter.ZhihuViewHolder> {
private ArrayList<ZhihuDailyItem> zhihuStories;
private Context mContext;
public ZhihuAdapter(Context context, ArrayList<ZhihuDailyItem> zhihuStories) {
this.zhihuStories = zhihuStories;
this.mContext = context;
}
@Override
public ZhihuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ZhihuViewHolder(LayoutInflater.from(mContext).inflate(R.layout.zhihu_daily_item, parent, false));
}
@Override
public void onBindViewHolder(final ZhihuViewHolder holder, int position) {
final ZhihuDailyItem zhihuDailyItem = zhihuStories.get(holder.getAdapterPosition());
if (DBUtils.getDB(mContext).isRead(Config.ZHIHU, zhihuDailyItem.getId(), 1))
holder.tvZhihuDaily.setTextColor(Color.GRAY);
else
holder.tvZhihuDaily.setTextColor(Color.BLACK);
holder.tvZhihuDaily.setText(zhihuDailyItem.getTitle());
holder.tvTime.setText(zhihuDailyItem.getDate());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBUtils.getDB(mContext).insertHasRead(Config.ZHIHU, zhihuDailyItem.getId(), 1);
holder.tvZhihuDaily.setTextColor(Color.GRAY);
Intent intent = new Intent(mContext, ZhihuStoryActivity.class);
intent.putExtra("type", ZhihuStoryActivity.TYPE_ZHIHU);
intent.putExtra("id", zhihuDailyItem.getId());
intent.putExtra("title", zhihuDailyItem.getTitle());
mContext.startActivity(intent);
}
});
holder.btnZhihu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, holder.btnZhihu);
popupMenu.getMenuInflater().inflate(R.menu.pop_menu, popupMenu.getMenu());
popupMenu.getMenu().removeItem(R.id.pop_share);
popupMenu.getMenu().removeItem(R.id.pop_fav);
final boolean isRead = DBUtils.getDB(mContext).isRead(Config.ZHIHU, zhihuDailyItem.getId(), 1);
if (!isRead)
popupMenu.getMenu().findItem(R.id.pop_unread).setTitle(R.string.common_set_read);
else
popupMenu.getMenu().findItem(R.id.pop_unread).setTitle(R.string.common_set_unread);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.pop_unread:
if (isRead) {
DBUtils.getDB(mContext).insertHasRead(Config.ZHIHU, zhihuDailyItem.getId(), 0);
holder.tvZhihuDaily.setTextColor(Color.BLACK);
} else {
DBUtils.getDB(mContext).insertHasRead(Config.ZHIHU, zhihuDailyItem.getId(), 1);
holder.tvZhihuDaily.setTextColor(Color.GRAY);
}
break;
}
return true;
}
});
popupMenu.show();
}
});
runEnterAnimation(holder.itemView);
if (zhihuStories.get(position).getImages() != null)
ImageLoader.loadImage(mContext, zhihuDailyItem.getImages()[0], holder.ivZhihuDaily);
}
private void runEnterAnimation(View view) {
view.setTranslationX(ScreenUtil.getScreenWidth(mContext));
view.animate()
.translationX(0)
.setStartDelay(100)
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.start();
}
@Override
public int getItemCount() {
return zhihuStories.size();
}
class ZhihuViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.iv_zhihu_daily)
ImageView ivZhihuDaily;
@BindView(R.id.tv_zhihu_daily)
TextView tvZhihuDaily;
@BindView(R.id.tv_time)
TextView tvTime;
@BindView(R.id.btn_zhihu)
Button btnZhihu;
ZhihuViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}