当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发中RecyclerView隐藏item的所在区域显示空白的方法

Android开发中RecyclerView隐藏item的所在区域显示空白的方法

2018年09月29日  | 移动技术网IT编程  | 我要评论

两讫是什么意思,北京缓解交通拥堵网站,梦幻西游伏魔录1.1

说明:

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

解决方法:

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

代码:

比如要隐藏下面xml代码item




 

 

这里给了一个方法把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 {

 private list list;
 private int selectid = 0;
 private activity activity;
 private string searchkeyname = "";//搜索关键字
 private string addrlevel;//跳出自动+1,如果进来的是4则关闭返回省级市县对象

 public accountaddrlistqryadapter(activity activity, list list, string addrlevel) {
  this.activity = activity;
  this.list = list;
  this.addrlevel = addrlevel;
 }

 @override
 public 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);
 }

 @override
 public void onbindviewholder(viewholder holder, final int position) {
  holder.tv_column.settext(list.get(position).getaddrname());
  holder.tv_column.setonclicklistener(new view.onclicklistener() {
@override
public 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);
  }
 }

 @override
 public 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);
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网