package name.caiyao.microreader.ui.adapter;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
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.weixin.WeixinNews;
import name.caiyao.microreader.config.Config;
import name.caiyao.microreader.ui.activity.WeixinNewsActivity;
import name.caiyao.microreader.utils.DBUtils;
import name.caiyao.microreader.utils.ImageLoader;
import name.caiyao.microreader.utils.ScreenUtil;
import name.caiyao.microreader.utils.SharePreferenceUtil;
/**
* Created by 蔡小木 on 2016/4/29 0029.
*/
public class WeixinAdapter extends RecyclerView.Adapter<WeixinAdapter.WeixinViewHolder> {
public ArrayList<WeixinNews> weixinNewses;
private Context mContext;
public WeixinAdapter(Context context,ArrayList<WeixinNews> weixinNewses) {
this.weixinNewses = weixinNewses;
this.mContext = context;
}
@Override
public WeixinViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new WeixinViewHolder(LayoutInflater.from(mContext).inflate(R.layout.weixin_item, parent, false));
}
@Override
public void onBindViewHolder(final WeixinViewHolder holder, int position) {
final WeixinNews weixinNews = weixinNewses.get(position);
if (DBUtils.getDB(mContext).isRead(Config.WEIXIN, weixinNews.getUrl(), 1))
holder.tvTitle.setTextColor(Color.GRAY);
else
holder.tvTitle.setTextColor(Color.BLACK);
holder.tvDescription.setText(weixinNews.getDescription());
holder.tvTitle.setText(weixinNews.getTitle());
holder.tvTime.setText(weixinNews.getHottime());
if (!TextUtils.isEmpty(weixinNews.getPicUrl())) {
ImageLoader.loadImage(mContext, weixinNews.getPicUrl(), holder.ivWeixin);
} else {
holder.ivWeixin.setImageResource(R.drawable.bg);
}
holder.btnWeixin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(mContext, holder.btnWeixin);
popupMenu.getMenuInflater().inflate(R.menu.pop_menu, popupMenu.getMenu());
popupMenu.getMenu().removeItem(R.id.pop_fav);
final boolean isRead = DBUtils.getDB(mContext).isRead(Config.WEIXIN, weixinNews.getUrl(), 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.WEIXIN, weixinNews.getUrl(), 0);
holder.tvTitle.setTextColor(Color.BLACK);
} else {
DBUtils.getDB(mContext).insertHasRead(Config.WEIXIN, weixinNews.getUrl(), 1);
holder.tvTitle.setTextColor(Color.GRAY);
}
break;
case R.id.pop_share:
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, weixinNews.getTitle() + " " + weixinNews.getUrl() + mContext.getString(R.string.share_tail));
shareIntent.setType("text/plain");
//设置分享列表的标题,并且每次都显示分享列表
mContext.startActivity(Intent.createChooser(shareIntent, mContext.getString(R.string.share)));
break;
}
return true;
}
});
popupMenu.show();
}
});
runEnterAnimation(holder.itemView, position);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DBUtils.getDB(mContext).insertHasRead(Config.WEIXIN, weixinNews.getUrl(), 1);
holder.tvTitle.setTextColor(Color.GRAY);
if (SharePreferenceUtil.isUseLocalBrowser(mContext)) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(weixinNews.getUrl())));
} else {
Intent intent = new Intent(mContext, WeixinNewsActivity.class);
intent.putExtra("url", weixinNews.getUrl());
intent.putExtra("title", weixinNews.getTitle());
mContext.startActivity(intent);
}
}
});
}
private void runEnterAnimation(View view, int position) {
view.setTranslationY(ScreenUtil.getScreenHight(mContext));
view.animate()
.translationY(0)
.setStartDelay(100 * (position % 5))
.setInterpolator(new DecelerateInterpolator(3.f))
.setDuration(700)
.start();
}
@Override
public int getItemCount() {
return weixinNewses.size();
}
class WeixinViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.iv_weixin)
ImageView ivWeixin;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.tv_time)
TextView tvTime;
@BindView(R.id.tv_description)
TextView tvDescription;
@BindView(R.id.btn_weixin)
Button btnWeixin;
WeixinViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}