package com.xhsemoticonskeyboard.common.adapter.emoticonadapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.xhsemoticonskeyboard.R; import com.xhsemoticonskeyboard.common.Constants; import java.io.IOException; import sj.keyboard.adpater.EmoticonsAdapter; import sj.keyboard.data.EmoticonEntity; import sj.keyboard.data.EmoticonPageEntity; import sj.keyboard.interfaces.EmoticonClickListener; import sj.keyboard.utils.imageloader.ImageLoader; public class BigEmoticonsAdapter extends EmoticonsAdapter<EmoticonEntity> { protected final double DEF_HEIGHTMAXTATIO = 1.6; public BigEmoticonsAdapter(Context context, EmoticonPageEntity emoticonPageEntity, EmoticonClickListener onEmoticonClickListener) { super(context, emoticonPageEntity, onEmoticonClickListener); this.mItemHeight = (int) context.getResources().getDimension(R.dimen.item_emoticon_size_big); this.mItemHeightMaxRatio = DEF_HEIGHTMAXTATIO; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = mInflater.inflate(R.layout.item_emoticon_big, null); viewHolder.rootView = convertView; viewHolder.ly_root = (LinearLayout) convertView.findViewById(R.id.ly_root); viewHolder.iv_emoticon = (ImageView) convertView.findViewById(R.id.iv_emoticon); viewHolder.tv_content = (TextView) convertView.findViewById(R.id.tv_content); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } bindView(position, viewHolder); updateUI(viewHolder, parent); return convertView; } protected void updateUI(ViewHolder viewHolder, ViewGroup parent) { if(mDefalutItemHeight != mItemHeight){ viewHolder.iv_emoticon.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mItemHeight)); } mItemHeightMax = this.mItemHeightMax != 0 ? this.mItemHeightMax : (int) (mItemHeight * mItemHeightMaxRatio); mItemHeightMin = this.mItemHeightMin != 0 ? this.mItemHeightMin : mItemHeight; int realItemHeight = ((View) parent.getParent()).getMeasuredHeight() / mEmoticonPageEntity.getLine(); realItemHeight = Math.min(realItemHeight, mItemHeightMax); realItemHeight = Math.max(realItemHeight, mItemHeightMin); viewHolder.ly_root.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, realItemHeight)); } protected void bindView(int position, ViewHolder viewHolder) { final boolean isDelBtn = isDelBtn(position); final EmoticonEntity emoticonEntity = mData.get(position); if (isDelBtn) { viewHolder.iv_emoticon.setImageResource(R.mipmap.icon_del); viewHolder.iv_emoticon.setBackgroundResource(com.keyboard.view.R.drawable.bg_emoticon); } else { if (emoticonEntity != null) { try { ImageLoader.getInstance(viewHolder.iv_emoticon.getContext()).displayImage(emoticonEntity.getIconUri(), viewHolder.iv_emoticon); } catch (IOException e) { e.printStackTrace(); } viewHolder.iv_emoticon.setBackgroundResource(com.keyboard.view.R.drawable.bg_emoticon); } } viewHolder.rootView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnEmoticonClickListener != null) { mOnEmoticonClickListener.onEmoticonClick(emoticonEntity, Constants.EMOTICON_CLICK_BIGIMAGE, isDelBtn); } } }); } public static class ViewHolder { public View rootView; public LinearLayout ly_root; public ImageView iv_emoticon; public TextView tv_content; } }