支持单选、多选 Android本地历史记录、及产品标签实现(附源码)(使用( 二 )


产品标签(支持单选、多选)的实现
##特色(开源库中copy的)
1.页面布局:主要是两个和两个,并不复杂就不展示了 。
2.初始化所有标签的:包括预先设置选中、设置最大选中数、点击和选中事件监听 。当标签选中时,初始化选中标签的;当选中的标签数量大于等于最大选中数时,给用户友好的提示 。

支持单选、多选  Android本地历史记录、及产品标签实现(附源码)(使用

文章插图
/*** 初始化所有标签的FlowLayout*/private void initFlowLayout() {TagAdapter tagAdapter = new TagAdapter(mVals) {@Overridepublic View getView(FlowLayout parent, int position, Object o) {TextView view = (TextView) View.inflate(context, R.layout.flowlayout_textview_selected, null);view.setText(mVals[position]);return view;}};//预先设置选中tagAdapter.setSelectedList(0, 1);flowlayout.setAdapter(tagAdapter);//设置最大选中数flowlayout.setMaxSelectCount(maxSelected);//为FlowLayout的标签设置监听事件flowlayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() {@Overridepublic boolean onTagClick(View view, int position, FlowLayout parent) {if (selectedList.size() >= maxSelected) {ToastUtil.makeText(context, "已达最大选中数" + maxSelected);} else {ToastUtil.makeText(context, mVals[position]);}return true;}});//为FlowLayout的标签设置选中监听事件flowlayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() {@Overridepublic void onSelected(Set selectPosSet) {initFlowLayoutSelected();}});}
3.初始化选中标签的:获取所有选中的的Set集合,通过遍历Set集合,并将数据添加到新的[]中,最后为填充数据 。因为在布局文件中将此的最大选中数设置为0,所以不能选中了 。
/*** 初始化选中标签的FlowLayout*/private void initFlowLayoutSelected() {int i = 0;//获得所有选中的position集合,例如[1,2,3,4]selectedList = flowlayout.getSelectedList();mValsSelected = new String[selectedList.size()];Iterator iterator = selectedList.iterator();while (iterator.hasNext()) {mValsSelected[i] = mVals[iterator.next()];i++;}tvSelected.setText("最大选中数为:" + maxSelected + "(已选中" + selectedList.size() + ")" + "(position:" + selectedList.toString() + ")");flowlayoutSelected.setAdapter(new TagAdapter(mValsSelected) {@Overridepublic View getView(FlowLayout parent, int position, Object o) {TextView view = (TextView) View.inflate(context, R.layout.flowlayout_textview_no_selected, null);view.setText(mValsSelected[position]);return view;}});}
小结
以上就是两个功能:本地历史记录和产品标签的实现了,虽然功能不算复杂,但完成之后还是很有成就感的,拿着玩一玩吧 。上还有许许多多优秀的开源库,结合自己的具体需求,开源库可以实现各种各样的效果,小伙伴们赶紧去尝试吧 。
附:
项目源码下载地址
项目地址
开源库地址
---------------------------------------------------------------------------------------------------------------------------
早计划,早准备,早完成 。欢迎关注!交流!Star!