说明:

RecyclerView隐藏当前item时候,由于为了优化性能,只是把内容隐藏,但是高度不会改变,这样就会出现一片空白区域。

解决方法:

手动改变隐藏的item高度为0。

代码:

比如要隐藏下面xml代码item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/ll_item"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/white"android:orientation="vertical"><TextViewandroid:id="@+id/tv_column"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:textColor="@color/font_4A4A4A"android:text="栏目名"android:textSize="12sp" /><Viewandroid:layout_width="match_parent"android:layout_height="0.3dp"android:background="@color/line_dddddd"/>
</LinearLayout>

这里给了一个方法把ll_item这个布局id传入即可

//防止隐藏item出现空白public void setVisibility(boolean isVisible, View itemView) {RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();if (isVisible) {param.height = RelativeLayout.LayoutParams.WRAP_CONTENT;// 这里注意使用自己布局的根布局类型param.width = RelativeLayout.LayoutParams.MATCH_PARENT;// 这里注意使用自己布局的根布局类型itemView.setVisibility(View.VISIBLE);} else {itemView.setVisibility(View.GONE);param.height = 0;param.width = 0;}itemView.setLayoutParams(param);}

完整代码:

package com.mandaotech.ewallet.android.ui.adapter;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;import com.mandaotech.ewallet.R;
import com.mandaotech.ewallet.android.ui.activity.elecaccount.AccountAddrlistQryActivity;
import com.mandaotech.ewallet.android.ui.activity.elecaccount.AccountOccupationActivity;
import com.mandaotech.ewallet.android.ui.activity.elecaccount.bean.AccountOccupationBean;
import com.mandaotech.ewallet.android.ui.activity.elecaccount.bean.AddrlistQryBean;
import com.mandaotech.ewallet.android.ui.activity.elecaccount.bean.AddrlistQryBean.AddlistQry;import java.io.Serializable;
import java.util.List;/*** 省级市县* Created by zst on 2018/7/12.*/
public abstract class AccountAddrlistQryAdapter extends RecyclerView.Adapter<AccountAddrlistQryAdapter.ViewHolder> {private List<AddrlistQryBean.AddlistQry> list;private int selectId = 0;private Activity activity;private String searchKeyName = "";//搜索关键字private String addrLevel;//跳出自动+1,如果进来的是4则关闭返回省级市县对象public AccountAddrlistQryAdapter(Activity activity, List<AddrlistQryBean.AddlistQry> list, String addrLevel) {this.activity = activity;this.list = list;this.addrLevel = addrLevel;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_account_addrlist_qry, parent, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(ViewHolder holder, final int position) {holder.tv_column.setText(list.get(position).getAddrName());holder.tv_column.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {//setColumn(list.get(position).getOccupation());int addrLevelInt = Integer.parseInt(addrLevel);if (addrLevelInt == 4) {//如果是最后一级直接关闭返回Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putSerializable(AccountAddrlistQryActivity.INTENT_RESULT_ADDRLIST_QRY_BEAN, (Serializable) list.get(position));intent.putExtras(bundle);intent.putExtra(AccountAddrlistQryActivity.INTENT_RESULT_CHECK_NAME, list.get(position).getAddrName());activity.setResult(Activity.RESULT_OK, intent);activity.finish();} else {//如果不是最后一级,向下一级跳转setCheckName(list.get(position).getAddrName());addrLevelInt = addrLevelInt + 1;Intent intent = new Intent(activity, AccountAddrlistQryActivity.class);intent.putExtra(AccountAddrlistQryActivity.INTENT_REQUEST_ADDR_CODE, list.get(position).getAddrCode());intent.putExtra(AccountAddrlistQryActivity.INTENT_REQUEST_ADDR_LEVEL, addrLevelInt + "");activity.startActivityForResult(intent, AccountAddrlistQryActivity.INTENT_REQUEST_CODE);}}});if (list.get(position).getAddrName().contains(searchKeyName)) {setVisibility(true, holder.ll_item);} else {setVisibility(false, holder.ll_item);}}@Overridepublic int getItemCount() {return list.size();}public static class ViewHolder extends RecyclerView.ViewHolder {TextView tv_column;LinearLayout ll_item;public ViewHolder(View view) {super(view);tv_column = (TextView) view.findViewById(R.id.tv_column);ll_item = (LinearLayout) view.findViewById(R.id.ll_item);}}//防止隐藏item出现空白public void setVisibility(boolean isVisible, View itemView) {RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();if (isVisible) {param.height = RelativeLayout.LayoutParams.WRAP_CONTENT;// 这里注意使用自己布局的根布局类型param.width = RelativeLayout.LayoutParams.MATCH_PARENT;// 这里注意使用自己布局的根布局类型itemView.setVisibility(View.VISIBLE);} else {itemView.setVisibility(View.GONE);param.height = 0;param.width = 0;}itemView.setLayoutParams(param);}public String getSearchKeyName() {return searchKeyName;}public void setSearchKeyName(String searchKeyName) {this.searchKeyName = searchKeyName;}public abstract void setCheckName(String checkName);
}

Android RecyclerView隐藏item的所在区域显示空白相关推荐

  1. android recyclerview 横向item 宽度,RecyclerView的item宽度不能全屏显示及线性布局与grid布局切换混乱解决方法...

    1.RecyclerView的Item宽度不能全屏显示 出现这种的原因有两种: 1.第一种是在adapter中加载inflater时parent传入为null 2.如果第一种不行,第二种原因就是在Re ...

  2. Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别

    效果图: 第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDete ...

  3. android item list居中,RecyclerView选中item居中显示

    使用RecyclerView时需要将选中的item在View中居中显示,RecyclerView的scrollToPosition(position)方法只会将position所对应的item滚动到屏 ...

  4. Android隐藏标题栏,全屏显示

    Android 1.5测试通过 只需在以下代码中的,setCurrentView();之前调用即可 http://hi.baidu.com/wishwingliao/blog/item/38feb71 ...

  5. android 自动打开第三方应用程序,Android如何做到应用程序图标隐藏,由第三方程序显示启动...

    Android如何做到应用程序图标隐藏,由第三方程序显示启动 发布时间:2020-07-13 03:25:02 来源:51CTO 阅读:11353 作者:ord1nary 在AndroidManife ...

  6. Android 解决RecyclerView删除Item导致位置错乱的问题

    Android 解决RecyclerView删除Item导致位置错乱的问题 参考文章: (1)Android 解决RecyclerView删除Item导致位置错乱的问题 (2)https://www. ...

  7. Android 高级UI设计笔记20:RecyclerView 的详解之RecyclerView添加Item点击事件

    1. 引言: RecyclerView侧重的是布局的灵活性,虽说可以替代ListView但是连基本的点击事件都没有,这篇文章就来详细讲解如何为RecyclerView的item添加点击事件,顺便复习一 ...

  8. android批量删除图片,Android RecyclerView单点、批量数据元素项目item的增加、删除和移动...

    Android RecyclerView单点.批量数据元素项目item的增加.删除和移动 前文附录1,2介绍了基本的Android RecyclerView单点.批量元素项目的更新.现在给出其他比较重 ...

  9. 解决ScrollView嵌套RecyclerView出现item显示不全的问题

    解决ScrollView嵌套RecyclerView出现item显示不全的问题 参考文章: (1)解决ScrollView嵌套RecyclerView出现item显示不全的问题 (2)https:// ...

最新文章

  1. datagrid加checkbox实现分页不丢失选择的记录 (转)
  2. Linux中chown和chmod的区别和用法(转)
  3. 【NLP】CS224N课程笔记|词向量I: 简介, SVD和Word2Vec
  4. Android自动化测试探索
  5. postgressql数据库给模式添加search_path
  6. FIRST集和FOLLOW集的构造
  7. wpf的控件style
  8. mcs51 串口通信 单片机发 pc收
  9. 【div+css】两个div,如何让内层的div在外层div中水平垂直居中
  10. 一笔画: 表现绘画过程的美
  11. 模拟汽车速度控制系统的设计 微机原理课程设计
  12. Android开发丶调用百度地图进行导航
  13. 如何将一个向量投影到一个平面上_数学一轮复习32,平面向量数量积及其应用,三角形‘四心’模型...
  14. antDesign 自定义分页样式
  15. ps裁剪和裁切的区别_ps裁剪工具怎么用?调整图像与画布的尺寸(三)
  16. java-web6-Servlet知识
  17. 升级版飞机大战来袭,手把手教学,万字详解,你还学不会嘛?
  18. 小白学习MySQL - 聊聊数据备份的重要性
  19. 走进西藏――53个最基本的常识
  20. Oracle Corp甲骨文公司推出Oracle NoSQL数据库2.0版

热门文章

  1. linux 查看机器吞吐率,iostat:查看CPU使用率及硬盘吞吐率
  2. 如何让Excel表使用一次后即自我销毁?
  3. 解决mysql子查询里面无法使用LIMIT This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery'
  4. 电影《叶问4》终结篇终于来袭,这次甄子丹与美军特种部队对打!
  5. kali 2020 VMware 15.5.1 启动时出错 before you can run vmware, several modules must be complied and……
  6. 图片里的文字如何提取?试试这几种提取方法
  7. 饭谈:元宇宙时代到来,我们软件测试人员何去何从?
  8. sap开发语言_我应该怎么学习SAP?
  9. 将Excel中的数据导入到MSSQLServer2000
  10. 观点 | 新经济税收治理思路探索