package com.metis.commentpart.adapter;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.metis.base.manager.DisplayManager;
import com.metis.base.module.User;
import com.metis.base.utils.TimeUtils;
import com.metis.commentpart.R;
import com.metis.commentpart.module.Comment;
import com.metis.commentpart.module.CommentAttachment;
import java.util.List;
public class FlipperAdapter extends BaseAdapter {
private List<Comment> mCommentList = null;
private Context mContext = null;
public FlipperAdapter (Context context, List<Comment> commentList) {
mContext = context;
mCommentList = commentList;
}
@Override
public int getCount() {
return mCommentList.size();
}
@Override
public Object getItem(int position) {
return mCommentList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FlipperHolder holder = null;
if (convertView == null) {
holder = new FlipperHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.layout_flipper_item, null);
holder.profileIv = (ImageView)convertView.findViewById(R.id.flipper_profile);
holder.flipperTv = (TextView)convertView.findViewById(R.id.flipper_content);
holder.flipperVoiceIv = (ImageView)convertView.findViewById(R.id.flipper_voice);
holder.flipperVoicePanel = (ViewGroup)convertView.findViewById(R.id.voice_panel);
holder.flipperDurationTv = (TextView)convertView.findViewById(R.id.voice_duration);
holder.flipperVoiceContainer = (ViewGroup)convertView.findViewById(R.id.voice_container);
convertView.setTag(holder);
} else {
holder = (FlipperHolder)convertView.getTag();
}
final Comment comment = mCommentList.get(position);
if (comment.commentType == Comment.COMMENT_TYPE_TEXT) {
holder.flipperTv.setText(comment.content);
holder.flipperTv.setVisibility(View.VISIBLE);
holder.flipperVoicePanel.setVisibility(View.GONE);
} else if (comment.commentType == Comment.COMMENT_TYPE_VOICE) {
holder.flipperTv.setVisibility(View.GONE);
holder.flipperVoicePanel.setVisibility(View.VISIBLE);
CommentAttachment attachment = comment.imgOrVoiceUrl;
final Resources resources = mContext.getResources();
final int max = resources.getDimensionPixelSize(R.dimen.voice_max_width);
final int min = resources.getDimensionPixelSize(R.dimen.voice_min_width);
int width = min;
if (attachment != null) {
holder.flipperDurationTv.setText(TimeUtils.format(attachment.voiceLength));
width = min + attachment.voiceLength / 100;
width = Math.min(width, max);
}
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)holder.flipperVoiceContainer.getLayoutParams();
if (params == null) {
params = new RelativeLayout.LayoutParams(width, ViewGroup.LayoutParams.WRAP_CONTENT);
} else {
params.width = width;
}
holder.flipperVoiceContainer.setLayoutParams(params);
}
User user = comment.user;
if (user != null) {
DisplayManager.getInstance(mContext).displayProfile(user.getAvailableAvatar(), holder.profileIv);
}
Drawable drawable = holder.flipperVoiceIv.getDrawable();
if (drawable != null && drawable instanceof AnimationDrawable) {
((AnimationDrawable)drawable).stop();
}
return convertView;
}
private class FlipperHolder {
public ImageView profileIv = null;
public TextView flipperTv = null;
public ImageView flipperVoiceIv = null;
public ViewGroup flipperVoicePanel = null;
public ViewGroup flipperVoiceContainer = null;
public TextView flipperDurationTv = null;
}
}