public void init( List<EaseEmojiconGroupEntity> emojiconGroupList, int emijiconColumns, int bigEmojiconColumns) { if (emojiconGroupList == null) { throw new RuntimeException("emojiconGroupList is null"); } this.groupEntities = emojiconGroupList; this.emojiconColumns = emijiconColumns; this.bigEmojiconColumns = bigEmojiconColumns; viewpages = new ArrayList<View>(); for (int i = 0; i < groupEntities.size(); i++) { EaseEmojiconGroupEntity group = groupEntities.get(i); List<EaseEmojicon> groupEmojicons = group.getEmojiconList(); totalEmojiconList.addAll(groupEmojicons); List<View> gridViews = getGroupGridViews(group); if (i == 0) { firstGroupPageSize = gridViews.size(); } maxPageCount = Math.max(gridViews.size(), maxPageCount); viewpages.addAll(gridViews); } pagerAdapter = new EmojiconPagerAdapter(viewpages); setAdapter(pagerAdapter); setOnPageChangeListener(new EmojiPagerChangeListener()); if (pagerViewListener != null) { pagerViewListener.onPagerViewInited(maxPageCount, firstGroupPageSize); } }
/** * 获取pager数量 * * @param emojiconList * @return */ private int getPageSize(EaseEmojiconGroupEntity groupEntity) { List<EaseEmojicon> emojiconList = groupEntity.getEmojiconList(); int itemSize = emojiconColumns * emojiconRows - 1; int totalSize = emojiconList.size(); Type emojiType = groupEntity.getType(); if (emojiType == Type.BIG_EXPRESSION) { itemSize = bigEmojiconColumns * bigEmojiconRows; } int pageSize = totalSize % itemSize == 0 ? totalSize / itemSize : totalSize / itemSize + 1; return pageSize; }
/** * 获取表情组的gridview list * * @param groupEntity * @return */ public List<View> getGroupGridViews(EaseEmojiconGroupEntity groupEntity) { List<EaseEmojicon> emojiconList = groupEntity.getEmojiconList(); int itemSize = emojiconColumns * emojiconRows - 1; int totalSize = emojiconList.size(); Type emojiType = groupEntity.getType(); if (emojiType == Type.BIG_EXPRESSION) { itemSize = bigEmojiconColumns * bigEmojiconRows; } int pageSize = totalSize % itemSize == 0 ? totalSize / itemSize : totalSize / itemSize + 1; List<View> views = new ArrayList<View>(); for (int i = 0; i < pageSize; i++) { View view = View.inflate(context, R.layout.ease_expression_gridview, null); GridView gv = (GridView) view.findViewById(R.id.gridview); if (emojiType == Type.BIG_EXPRESSION) { gv.setNumColumns(bigEmojiconColumns); } else { gv.setNumColumns(emojiconColumns); } List<EaseEmojicon> list = new ArrayList<EaseEmojicon>(); if (i != pageSize - 1) { list.addAll(emojiconList.subList(i * itemSize, (i + 1) * itemSize)); } else { list.addAll(emojiconList.subList(i * itemSize, totalSize)); } if (emojiType != Type.BIG_EXPRESSION) { EaseEmojicon deleteIcon = new EaseEmojicon(); deleteIcon.setEmojiText(EaseSmileUtils.DELETE_KEY); list.add(deleteIcon); } final EmojiconGridAdapter gridAdapter = new EmojiconGridAdapter(context, 1, list, emojiType); gv.setAdapter(gridAdapter); gv.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { EaseEmojicon emojicon = gridAdapter.getItem(position); if (pagerViewListener != null) { String emojiText = emojicon.getEmojiText(); if (emojiText != null && emojiText.equals(EaseSmileUtils.DELETE_KEY)) { pagerViewListener.onDeleteImageClicked(); } else { pagerViewListener.onExpressionClicked(emojicon); } } } }); views.add(view); } return views; }