在项目中需要实现一个类似于微信建群聊天,人员选择的效果,我们先来看下效果图:

类似于这种效果,实现思路是使用RecycleView的多布局来实现这个效果,最后一个输入框添加在最后面。上具体代码:
选中结果显示RecycleView,当有值的时候使搜索icon隐藏,无值的时候显示出来就可以了

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="@dimen/item_height"android:background="@drawable/bg_white_line"android:gravity="center_vertical"android:orientation="horizontal"android:paddingHorizontal="@dimen/padding_horizontal"><ImageViewandroid:id="@+id/diagIvQuery"android:layout_width="@dimen/icon_size"android:layout_height="@dimen/icon_size"android:scaleType="center"android:src="@drawable/shishi_btn_search3x" /><android.support.v7.widget.RecyclerViewandroid:id="@+id/diagRvSel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:overScrollMode="never"android:scrollbars="none" />
</LinearLayout>

RecycleView的Item布局分为两个,一个用来显示选中结果;另一个输入搜索条件:
显示选中结果:diagnosis_search_sel_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/diagSelTvTitle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginHorizontal="@dimen/gap_2"android:background="@drawable/shape_video_gray_msgcount"android:paddingHorizontal="@dimen/gap_10"android:paddingVertical="@dimen/gap_5"tools:text="诊断结果标签" />
</RelativeLayout>

显示输入条件的edittext布局:diagnosis_search_sel_footview.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><EditTextandroid:id="@+id/diagItemEtQuery"style="@style/text_15_333333"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:background="@null"android:hint="搜索诊断术语"android:imeOptions="actionSearch"android:minEms="6"android:paddingHorizontal="@dimen/gap_10"android:paddingVertical="@dimen/gap_5"android:singleLine="true" />
</android.support.v7.widget.LinearLayoutCompat>

最重要的就是在Adapter中对多布局item的处理了

public class DiagSearchSelAdapter extends CommonAdapter4RV<DiagnosisBean> {private final int TYPE_NORMAL = 0;private final int TYPE_FOOT = 1;private View.OnClickListener etQueryClickListener;//条件输入框的点击监听事件private TextView.OnEditorActionListener etQueryOnEditorActionListener;//软键盘搜索按钮响应事件/*** 设置搜索点击监听事件** @param etQueryClickListener*/public void setEtQueryClickListener(View.OnClickListener etQueryClickListener) {this.etQueryClickListener = etQueryClickListener;}/*** 设置搜索响应软键盘确认事件** @param etQueryOnEditorActionListener*/public void setEtQueryOnEditorActionListener(TextView.OnEditorActionListener etQueryOnEditorActionListener) {this.etQueryOnEditorActionListener = etQueryOnEditorActionListener;}public DiagSearchSelAdapter(Context context, List<DiagnosisBean> lDatas) {super(context, lDatas);}@Overridepublic int getItemCount() {return lDatas.size() + 1;}@Overridepublic int getItemViewType(int position) {if (isNormalData(position)) {return TYPE_NORMAL;}return TYPE_FOOT;}@Overridepublic int getLayoutId(int viewType) {if (TYPE_NORMAL == viewType) {return R.layout.diagnosis_search_sel_item;} else {return R.layout.diagnosis_search_sel_footview;}}/*** 判断是否是最后一条数据** @param position* @return*/private boolean isNormalData(int position) {return position < getItemCount() - 1;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {if (isNormalData(position)) {super.onBindViewHolder(holder, position);} else {holder.setItemPosition(position);delFootView(holder);}}@Overridepublic void getItemView(ViewHolder holder, DiagnosisBean diagnosisBean) {holder.setText(R.id.diagSelTvTitle, diagnosisBean.getTitle());}/*** 处理查询框事件** @param holder*/private void delFootView(ViewHolder holder) {EditText etQuery = holder.getView(R.id.diagItemEtQuery);etQuery.setOnClickListener(etQueryClickListener);etQuery.setOnEditorActionListener(etQueryOnEditorActionListener);}
}

这里是实现这个效果的核心代码了,关于CommonAdapter4RV通用适配器的实现,去看鸿神博客吧!

仿微信建群添加人员效果相关推荐

  1. 高仿微信发起群聊添加联系人界面

    微信中发起群聊页面,每点击一个item(联系人),左上角就会添加上相应的联系人,再次点击就会取消选中,点击上面已选中的联系人也会取消选中,而且上面的联系人展示中会慢慢挤压右边的搜索框,直到右边有一定的 ...

  2. Android仿微信发起群聊的列表样式

    场景:今天一个朋友微信找我说碰到个问题让我看下,就是仿微信发起群聊的那个列表样式,其实这个功能实现起来没什么困难的地方,但是他遇到的问题是,最后的那个"搜索",随着前边列表的增加或 ...

  3. Android 仿微信朋友圈添加图片

    github地址(欢迎下载Demo) https://github.com/zhouxu88/WXCircleAddPic 老习惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧, ...

  4. 微信建群怎么建?不止一种方法,快试试这个!

    微信建群怎么建?很多小伙伴在使用微信的时候喜欢拉群和好友们一块聊天,但是建群的时候遇到了难题,怎么建微信群?如果想要建只有自己的微信群要怎么操作?别慌,今天给大家安利几种方法,帮你解决微信建群的疑惑! ...

  5. 仿微信的群组九宫格头像

    仿微信的群组九宫格头像 github地址:WeChatGroupAvatar 优点: 使用Bitmap合成的方式,而非九宫格里面具有九张图片.这样子的好处是对于图片加载不会出现一张张图片依次出现,刷新 ...

  6. Android UI设计与开发】第03期:引导界面(三)仿微信引导界面以及动画效果

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/8985457        基于前两篇比较简单的实例做铺垫之后,这一篇我们来实 ...

  7. 引导界面(三)仿微信引导界面以及动画效果

    基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧 ...

  8. android 微信浮窗实现_Android仿微信视屏悬浮窗效果

    在项目中需要对接入的腾讯云音视频,可以悬浮窗显示,悬浮窗可拖拽,并且在悬浮窗不影响其他的activity的焦点. 这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化悬浮,他讲的是视频 ...

  9. Android仿微信QQ群头像生成

    先上效果图 qq效果的图片是在github上找的项目 https://github.com/kongnanlive/android-combination-avatar 仿微信群头像是自己鼓捣出来的 ...

最新文章

  1. 如何安装或卸载 Internet Explorer 9?
  2. C#开发Unity游戏教程之Unity中方法的参数
  3. 天正怎么批量填充柱子_天正CAD插件使用教程合集
  4. IDEA Project Structure 配置说明
  5. MySQL也有潜规则 – Select 语句不加 Order By 如何排序?
  6. Node入门之创建第一个HelloNode
  7. Teams Bot开发系列:Middleware
  8. 移动端Rem之讲解总结
  9. 【C语言】创建一个函数,将输入的2个数排序
  10. Win10 取消桌面快捷键图标
  11. 转SQL中判断是否存在..........
  12. 字节跳动算法工程师总结:java抽象类和接口实验报告
  13. css与jquery、图标字体、常用数据
  14. Tcp-IP详解之Telnet
  15. mysql自定义函数优点_MySQL自定义函数
  16. 屏幕取词编程学习总结
  17. 苹果怎么登录服务器未响应,苹果 App Store 无法登陆的原因以及解决办法
  18. React开发者工具 React Developer Tools 的下载
  19. XSS 之 haozi me 题解——人生第一份CSDN题解
  20. 20分钟学会TCGA数据处理的视频链接

热门文章

  1. AngularJS(1)——AngularJS指令机制
  2. 个人站长创业失败的原因总结
  3. Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出
  4. vue2实现可拖拽甘特图(结合element-ui的gantt图)
  5. Attention专场——(2)Self-Attention 代码解析
  6. 华为java面试题目
  7. java获取google 的简单天气预报
  8. 英语不好可以学编程嘛?程序员必备英文单词汇总
  9. 大白话Vue源码系列(01):万事开头难
  10. 图论-全源最短路径-对比Floyd算法与暴力Dijkstra算法