package com.mzeat.ui.adapter; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.mzeat.R; import android.content.Context; import android.graphics.BitmapFactory; import android.graphics.Color; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.TextView; import com.mzeat.image.BitmapManager; import com.mzeat.model.Comment; import com.mzeat.model.ShareItem; import com.mzeat.util.SmileyParser; import com.mzeat.util.StringUtils; public class CommentListAdapter extends GenerateListViewWithImagesBaseAdapter<Comment> { private Context context; private BitmapManager bmpManager; SmileyParser parser ; public CommentListAdapter(Context context) { super(context); // TODO Auto-generated constructor stub this.context = context; this.bmpManager = new BitmapManager(BitmapFactory.decodeResource( context.getResources(), R.drawable.empty_image)); SmileyParser.init(context); parser = SmileyParser.getInstance(); } @Override protected View createView(int position) { // TODO Auto-generated method stub LayoutInflater inflater = getLayoutInflater(); View convertView = inflater.inflate(R.layout.listitem_comment, null); ViewHolder holder = new ViewHolder(); holder.username = (TextView) convertView.findViewById(R.id.username); holder.creat_time = (TextView) convertView.findViewById(R.id.time); holder.content = (TextView) convertView.findViewById(R.id.content); holder.img_user = (ImageView) convertView.findViewById(R.id.img_user); holder.sentfrom = (TextView) convertView.findViewById(R.id.sentfrom); holder.tv_sentfrom = (TextView) convertView.findViewById(R.id.tv_sentfrom); convertView.setTag(holder); return convertView; } @Override protected void fillDataToView(View convertView, int position) { // TODO Auto-generated method stub Comment item = getItem(position); if (null == item) return; ViewHolder holder = (ViewHolder) convertView.getTag(); holder.username.setText(item.getUser_name()); holder.creat_time.setText(item.getTime()); if (!StringUtils.isEmpty(item.getUser_avatar())) { bmpManager.loadBitmap(item.getUser_avatar(), holder.img_user, BitmapFactory.decodeResource(context.getResources(), R.drawable.empty_image)); } if (!item.getParent_id().equals("0")) { String content = item.getContent(); Pattern pattern = Pattern.compile( "@([\\w\\u4e00-\\u9fa5]+):", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(content); String name = ""; if (matcher.find()) { name = matcher.group(1); System.out.println(name); } if (name.equals("")) { holder.content.setText(parser.addSmileySpans(item.getContent())); }else { String[] contentArray = content.split(name); StringBuffer sb = new StringBuffer(); sb.append(contentArray[0]); sb.append(name); sb.append(contentArray[1]); SpannableStringBuilder spannable = new SpannableStringBuilder( sb.toString()); int begin = contentArray[0].length(); int end = contentArray[0].length()+name.length(); spannable.setSpan(new ForegroundColorSpan(Color.RED), begin, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); holder.content.setText(parser.addSmileySpans(spannable)); } }else { holder.content.setText(parser.addSmileySpans(item.getContent())); } if (item.getSend_from()!= null && !StringUtils.isEmpty(item.getSend_from())) { holder.sentfrom.setVisibility(View.VISIBLE); holder.tv_sentfrom.setVisibility(View.VISIBLE); holder.tv_sentfrom.setText(item.getSend_from()); }else { holder.sentfrom.setVisibility(View.GONE); holder.tv_sentfrom.setVisibility(View.GONE); } } private class ViewHolder { TextView username; TextView content; TextView creat_time; ImageView img_user; TextView sentfrom; TextView tv_sentfrom; } @Override protected String getImageUrl(int index) { // TODO Auto-generated method stub return null; } @Override protected int getItemImageWidth() { // TODO Auto-generated method stub return LayoutParams.WRAP_CONTENT; } @Override protected int getItemImageHeight() { // TODO Auto-generated method stub return LayoutParams.WRAP_CONTENT; } }