BigEmoticonsAdapter.java 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package jiguang.chat.adapter;
  2. import android.content.Context;
  3. import android.view.View;
  4. import android.view.ViewGroup;
  5. import android.widget.ImageView;
  6. import android.widget.LinearLayout;
  7. import android.widget.TextView;
  8. import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
  9. import java.io.IOException;
  10. import jiguang.chat.model.Constants;
  11. import jiguang.chat.utils.keyboard.adpater.EmoticonsAdapter;
  12. import jiguang.chat.utils.keyboard.data.EmoticonEntity;
  13. import jiguang.chat.utils.keyboard.data.EmoticonPageEntity;
  14. import jiguang.chat.utils.keyboard.interfaces.EmoticonClickListener;
  15. import jiguang.chat.utils.keyboard.utils.imageloader.ImageLoader;
  16. public class BigEmoticonsAdapter extends EmoticonsAdapter<EmoticonEntity> {
  17. protected final double DEF_HEIGHTMAXTATIO = 1.6;
  18. public BigEmoticonsAdapter(Context context, EmoticonPageEntity emoticonPageEntity, EmoticonClickListener onEmoticonClickListener) {
  19. super(context, emoticonPageEntity, onEmoticonClickListener);
  20. this.mItemHeight = (int) context.getResources().getDimension(R.dimen.item_emoticon_size_big);
  21. this.mItemHeightMaxRatio = DEF_HEIGHTMAXTATIO;
  22. }
  23. @Override
  24. public View getView(int position, View convertView, ViewGroup parent) {
  25. ViewHolder viewHolder;
  26. if (convertView == null) {
  27. viewHolder = new ViewHolder();
  28. convertView = mInflater.inflate(R.layout.item_emoticon_big, null);
  29. viewHolder.rootView = convertView;
  30. viewHolder.ly_root = (LinearLayout) convertView.findViewById(R.id.ly_root);
  31. viewHolder.iv_emoticon = (ImageView) convertView.findViewById(R.id.iv_emoticon);
  32. viewHolder.tv_content = (TextView) convertView.findViewById(R.id.tv_content);
  33. convertView.setTag(viewHolder);
  34. } else {
  35. viewHolder = (ViewHolder) convertView.getTag();
  36. }
  37. bindView(position, viewHolder);
  38. updateUI(viewHolder, parent);
  39. return convertView;
  40. }
  41. protected void updateUI(ViewHolder viewHolder, ViewGroup parent) {
  42. if(mDefalutItemHeight != mItemHeight){
  43. viewHolder.iv_emoticon.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, mItemHeight));
  44. }
  45. mItemHeightMax = this.mItemHeightMax != 0 ? this.mItemHeightMax : (int) (mItemHeight * mItemHeightMaxRatio);
  46. mItemHeightMin = this.mItemHeightMin != 0 ? this.mItemHeightMin : mItemHeight;
  47. int realItemHeight = ((View) parent.getParent()).getMeasuredHeight() / mEmoticonPageEntity.getLine();
  48. realItemHeight = Math.min(realItemHeight, mItemHeightMax);
  49. realItemHeight = Math.max(realItemHeight, mItemHeightMin);
  50. viewHolder.ly_root.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, realItemHeight));
  51. }
  52. protected void bindView(int position, ViewHolder viewHolder) {
  53. final boolean isDelBtn = isDelBtn(position);
  54. final EmoticonEntity emoticonEntity = mData.get(position);
  55. if (isDelBtn) {
  56. viewHolder.iv_emoticon.setImageResource(R.mipmap.icon_del);
  57. viewHolder.iv_emoticon.setBackgroundResource(R.drawable.bg_emoticon);
  58. } else {
  59. if (emoticonEntity != null) {
  60. try {
  61. ImageLoader.getInstance(viewHolder.iv_emoticon.getContext()).displayImage(emoticonEntity.getIconUri(), viewHolder.iv_emoticon);
  62. } catch (IOException e) {
  63. e.printStackTrace();
  64. }
  65. viewHolder.iv_emoticon.setBackgroundResource(R.drawable.bg_emoticon);
  66. }
  67. }
  68. viewHolder.rootView.setOnClickListener(new View.OnClickListener() {
  69. @Override
  70. public void onClick(View v) {
  71. if (mOnEmoticonClickListener != null) {
  72. mOnEmoticonClickListener.onEmoticonClick(emoticonEntity, Constants.EMOTICON_CLICK_BIGIMAGE, isDelBtn);
  73. }
  74. }
  75. });
  76. }
  77. public static class ViewHolder {
  78. public View rootView;
  79. public LinearLayout ly_root;
  80. public ImageView iv_emoticon;
  81. public TextView tv_content;
  82. }
  83. }