package com.maxiee.heartbeat.ui.adapter; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AlertDialog; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.maxiee.heartbeat.R; import com.maxiee.heartbeat.common.GalleryUtils; import com.maxiee.heartbeat.common.TimeUtils; import com.maxiee.heartbeat.data.DataManager; import com.maxiee.heartbeat.database.utils.ImageUtils; import com.maxiee.heartbeat.database.utils.ThoughtUtils; import com.maxiee.heartbeat.model.Event; import com.maxiee.heartbeat.model.Image; import com.maxiee.heartbeat.ui.EventDetailActivity; import java.util.ArrayList; /** * Created by maxiee on 15-6-12. */ public class TodayEventAdapter extends RecyclerView.Adapter<TodayEventAdapter.ViewHolder> { private static final String TAG = TodayEventAdapter.class.getSimpleName(); private static final int ITEM_VIEW_TYPE_HEADER = 0; private static final int ITEM_VIEW_TYPE_ITEM = 1; private ArrayList<Event> mEventList; public TodayEventAdapter(ArrayList<Event> mEventList) { this.mEventList = mEventList; } public void setData(ArrayList<Event> mEventList) { this.mEventList = mEventList; } @Override public int getItemViewType(int position) { return isHeader(position) ? ITEM_VIEW_TYPE_HEADER : ITEM_VIEW_TYPE_ITEM; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ITEM_VIEW_TYPE_HEADER) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_today_header, parent, false); return new ViewHolder(v, ITEM_VIEW_TYPE_HEADER); } else { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_event_card, parent, false); return new ViewHolder(v, ITEM_VIEW_TYPE_ITEM); } } @Override public void onBindViewHolder(ViewHolder holder, final int position) { if (holder.mViewType == ITEM_VIEW_TYPE_ITEM) { final Event event = mEventList.get(position - 1); holder.tvEvent.setText(event.getEvent()); holder.tvTime.setText( TimeUtils.parseTime( holder.mView.getContext(), event.getTimestamp())); holder.tvThoughtCount.setText( String.valueOf(ThoughtUtils.getEventCount(holder.mContext, event.getId()))); // Log.d(TAG, "事件列表项目"); // Log.d(TAG, "编号:" + String.valueOf(event.getId())); // Log.d(TAG, "名称:" + event.getEvent()); holder.mView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Context context = v.getContext(); Intent intent = new Intent(context, EventDetailActivity.class); intent.putExtra( EventDetailActivity.EXTRA_NAME, mEventList.get(position - 1).getId()); context.startActivity(intent); } }); holder.mView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); final String[] items = new String[]{ v.getContext().getString(R.string.delete) }; final Context context = v.getContext(); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (which == 0) { DataManager.getInstance(context).deleteEvent(event.getId()); } } }); builder.show(); return true; } }); Image i = ImageUtils.getImageByEventId(holder.mContext, event.getId()); int marginTBHasImage = (int) holder.mContext.getResources().getDimension(R.dimen.item_event_has_image_margin_tb); int marginTBNoImage = (int) holder.mContext.getResources().getDimension(R.dimen.item_event_no_image_margin_tb); int marginLR = (int) holder.mContext.getResources().getDimension(R.dimen.item_event_image_margin_lr); ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) holder.tvEvent.getLayoutParams(); if (i != null) { holder.mCoverImage.setVisibility(View.VISIBLE); Glide.with(holder.mContext) .load(GalleryUtils.getImagePath(i.getPath())) .centerCrop() .into(holder.mCoverImage); params.setMargins(marginLR, marginTBHasImage, marginLR, marginTBHasImage); } else { holder.mCoverImage.setVisibility(View.GONE); params.setMargins(marginLR, marginTBNoImage, marginLR, marginTBNoImage); } } else { DataManager dm = DataManager.getInstance(holder.mContext); holder.tvEventCount.setText(String.valueOf(dm.getTodayEventCount())); holder.tvThoughtCount.setText(String.valueOf(dm.getTodayThoughtCount())); showTodayHint(dm.getTodayThoughtCount(), holder.tvTodayHint, holder.mContext); } } private boolean isHeader(int position) { return position == 0; } @Override public int getItemCount() { return mEventList.size() + 1; } private static void showTodayHint(int thoughtCount, TextView tvHint, Context context) { String[] hints = context.getResources().getStringArray(R.array.today_tips); if (thoughtCount < 2) { tvHint.setText(hints[0]); } else if (thoughtCount < 5) { tvHint.setText(hints[1]); } else if (thoughtCount < 10) { tvHint.setText(hints[2]); } else { tvHint.setText(hints[3]); } } public class ViewHolder extends RecyclerView.ViewHolder { public TextView tvEvent, tvTime,tvThoughtCount; public TextView tvEventCount, tvTodayHint; public final View mView; public Context mContext; public ImageView mCoverImage; public int mViewType; public ViewHolder(View itemView, int viewType) { super(itemView); mViewType = viewType; mContext = itemView.getContext(); if (viewType == ITEM_VIEW_TYPE_ITEM) { this.mView = itemView; this.tvEvent = (TextView) itemView.findViewById(R.id.tv_event); this.tvTime = (TextView) itemView.findViewById(R.id.tv_time); this.tvThoughtCount = (TextView) itemView.findViewById(R.id.tv_thought_count); this.mCoverImage = (ImageView) itemView.findViewById(R.id.image_cover); } else { mView = itemView; tvEventCount = (TextView) itemView.findViewById(R.id.tv_event_count); tvThoughtCount = (TextView) itemView.findViewById(R.id.tv_thought_count); tvTodayHint = (TextView) itemView.findViewById(R.id.tv_today_hint); } } } }