package com.lincanbin.carbonforum.adapter; import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.lincanbin.carbonforum.R; import com.lincanbin.carbonforum.TopicActivity; import com.lincanbin.carbonforum.config.APIAddress; import com.lincanbin.carbonforum.util.TimeUtil; import java.util.List; import java.util.Map; /** * Created by 灿斌 on 5/14/2015. */ public class TopicAdapter extends RecyclerView.Adapter{ private Context context; private LayoutInflater layoutInflater; public interface OnRecyclerViewListener { void onItemClick(int position); boolean onItemLongClick(int position); } private OnRecyclerViewListener onRecyclerViewListener; public void setOnRecyclerViewListener(OnRecyclerViewListener onRecyclerViewListener) { this.onRecyclerViewListener = onRecyclerViewListener; } private static final String TAG = TopicAdapter.class.getSimpleName(); private List<Map<String,Object>> list; public TopicAdapter(Context context){ this.context = context; layoutInflater = LayoutInflater.from(context); } public void setData(List<Map<String,Object>> list) { this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = layoutInflater.inflate(R.layout.item_topic_list, null); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); view.setLayoutParams(lp); return new topicViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) { final topicViewHolder holder = (topicViewHolder) viewHolder; holder.position = i; Map<String,Object> topic = list.get(i); holder.Title.setText(Html.fromHtml(topic.get("Topic").toString()).toString()); holder.Description.setText(topic.get("UserName").toString() + " · " + topic.get("LastName").toString()); holder.Time.setText(TimeUtil.formatTime(context, Long.parseLong(topic.get("LastTime").toString()))); Glide.with(context).load(APIAddress.MIDDLE_AVATAR_URL(topic.get("UserID").toString(), "middle")).into(holder.Avatar); } @Override public int getItemCount() { return list.size(); } class topicViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { public View rootView; ImageView Avatar; TextView Title; TextView Description; TextView Time; public int position; public topicViewHolder(View itemView) { super(itemView); Title = (TextView) itemView.findViewById(R.id.title); Description = (TextView) itemView.findViewById(R.id.description); Time = (TextView) itemView.findViewById(R.id.time); Avatar = (ImageView)itemView.findViewById(R.id.avatar); rootView = itemView.findViewById(R.id.topic_item); //rootView.setClickable(true); rootView.setOnClickListener(this); rootView.setOnLongClickListener(this); } @Override //点击事件 public void onClick(View v) { //Toast.makeText(context, "onItemClick" + list.get(position).get("Topic").toString(), Toast.LENGTH_SHORT).show(); //v.getBackground().setColorFilter(Color.parseColor("#90A4AE"), PorterDuff.Mode.DARKEN); Intent intent = new Intent(context, TopicActivity.class); intent.putExtra("Topic", list.get(position).get("Topic").toString()); intent.putExtra("TopicID", list.get(position).get("ID").toString()); intent.putExtra("TargetPage", "1"); context.startActivity(intent); //if (null != onRecyclerViewListener) { //onRecyclerViewListener.onItemClick(position); //} } @Override //长按事件 public boolean onLongClick(View v) { if(null != onRecyclerViewListener){ return onRecyclerViewListener.onItemLongClick(position); } return false; } } }