使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。...比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排的行为第二类布局。单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。...2.ListView包含不同Item的布局 我们需要做这些工作: 1)重写 getViewTypeCount() – 该方法返回多少个不同的布局 2)重写 getItemViewType...(int) – 根据position返回相应的Item 3)根据view item的类型,在getView中创建正确的convertView 3.案例 import java.util.ArrayList...; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView
看一下实现效果吧: image.png 动画 我们先来看看Android中的动画吧: Android中的动画分为三种: Tween动画,这一类的动画提供了旋转、平移、缩放等效果。...分析 image.png 我们可以看到百度外卖的下拉刷新的头是一个骑车的快递员在路上疾行,分析一下我们得到下面的动画: 背景图片的平移动画 太阳的自旋转动画 两个小轮子的自旋转动画 这就很简单了,接下来我们去百度外面的图片资源文件里找到这几张图片...浮点数表示相对于Object的左边缘,如5; 百分比表示相对于Object的左边缘,如5%; 另一种百分比表示相对于父容器的左边缘,如5%p; 一般设置为50%表示在Object中心 android:...浮点数表示相对于Object的上边缘,如5; 百分比表示相对于Object的上边缘,如5%; 另一种百分比表示相对于父容器的上边缘,如5%p; 一般设置为50%表示在Object中心 android:...(state) { case DONE://如果的隐藏的状态 //设置headerView的padding为隐藏
item.xml是ListView的子布局里面仅仅有一个TextView,listview_footer.xml是listview的载入很多其它的底部布局,listview_header.xml是listview.../** 适配listView*/ adapter=new MyAdapter(this, list); listView.setAdapter(adapter); /** 加入一个线程设置时间有等待的效果...= headerView.getMeasuredHeight(); // 设置内边距,正好距离顶部为一个负的整个布局的高度,正好把头部隐藏 headerView.setPadding...ListView的顶部 addHeaderView(headerView, null, false); // 设置滚动监听事件 setOnScrollListener...= LOADING) { // 保证在设置padding的过程中,当前的位置一直是在head。否则假设当列表超出屏幕的话,当在上推的时候。
的 paddingTop 大于0时,播放美团小人出现的帧动画,最后就是手指松开时播放刷新中的帧动画了。...如果嫌麻烦,文末有本 Demo 的下载链接,里面就有素材图片。 有了图片后我们先写个帧动画的 drawable.xml : 的头部,并且设置了 setPadding (关于 ListView 下拉刷新的原理大家应该都懂吧?!)。...ACTION_DOWN :首先判断了当 ListView 在顶端时才可以下拉刷新,并且记录了手指按下的Y坐标; ACTION_MOVE :根据滑动的 offsetY 来动态地设置 headerView...若大于0则把 headerView 全部显示出来,播放刷新中的动画,并且回调了刷新监听器的接口;小于0则把 headerView 重新隐藏起来。并重置相关的值。
listview添加headview后的点击事件 1、头部view:设置view的点击时间,用于屏蔽listview的item的点击事件 ...:如果listview不设置适配器,headview也不会显示的 lv.setAdapter(sa); 5、设置item点击事件...;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;public...(R.id.listView1); // 头部view:设置view的点击时间,用于屏蔽listview的item的点击事件 View headerView = getLayoutInflater...:如果listview不设置适配器,headview也不会显示的 lv.setAdapter(sa); // 设置item点击事件: lv.setOnItemClickListener(new
在之前学习ListView的时候,有学习过如何给ListView添加列表头和列表尾。...但是通过近几期的学习,发现RecyclerView是一个比ListView更加强大和灵活的组件,今天一起来学习如何给RecyclerView添加首尾视图。...首先来简单回顾一下ListView是如何添加列表头和列表尾的,先定义好首尾视图,然后通过addHeaderView和addFooterView两个方法来加载即可,相对来说比较简单。...然后在RecyclerView中并未发现类似的方法,那么应该如何为其添加首尾视图呢?...跟据item的类型分别加载不同的布局以实现HeaderView和FooterView。
如果要实现ListView的效果,只需要设置Adapter和Layout Manager,如下: ? ListView只提供了notifyDataSetChanged()更新整个视图,这是很不合理的。...首先看构造函数,构造函数中获得系统属性android:listDivider,该属性是一个Drawable对象。 因此如果要设置,则需要在value/styles.xml中设置: ?...这个问题的描述是:当Item视图中有图片和文字,当更新文字并调用notifyItemChanged()时,文字改变的同时图片会闪一下。...添加setEmptyView ListView提供了setEmptyView()设置Adapter数据为空时的View视图。RecyclerView虽然没提供直接的API,但是也可以很简单地实现。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。
本文的代码以图片形式显示,点击图片显示高清图。 前言 下文中Demo的源代码地址:RecyclerViewDemo(Github)。...基本概念 RecyclerView是Android 5.0提出的新UI控件,位于support-v7包中,可以通过在build.gradle中添加compile 'com.android.support...这个问题的描述是:当Item视图中有图片和文字,当更新文字并调用notifyItemChanged()时,文字改变的同时图片会闪一下。...ListView提供了setEmptyView()设置Adapter数据为空时的View视图。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。
导语 RecyclerView是Android 5.0提出的新UI控件,可以用来代替传统的ListView。...ListView vs RecyclerView ListView相比RecyclerView,有一些优点: addHeaderView(), addFooterView()添加头视图和尾视图。...这个问题的描述是:当Item视图中有图片和文字,当更新文字并调用notifyItemChanged()时,文字改变的同时图片会闪一下。...添加setEmptyView ListView提供了setEmptyView()设置Adapter数据为空时的View视图。RecyclerView虽然没提供直接的API,但是也可以很简单地实现。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。
下拉刷新、加载更多、标记已读、轮播条、缓存 下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它...}); 3.setSelection(position);将对应位置的item放置到屏幕顶端 下拉刷新的原理: 1.自定义带下拉刷新,加载更多的listview public class RefreshListView...android:textColor="#ff0000" android:textSize="18sp" /> 4.在页签详情页中调用自定义listview的方法...); // 将头条新闻以头布局的形式加给listview lvList.addHeaderView(headerView); // 设置下拉刷新监听 lvList.setOnRefreshListener...= new BitmapUtils(mActivity); utils.configDefaultLoadingImage(R.drawable.topnews_item_default);// 设置默认图片
前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下,ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验...ListView 提供的 xml 属性 XML 属性 说明 备注 android:divider 设置 List 列表项的分隔条(可用颜色分割,也可用图片 Drawable 分割) 不设置列表之间的分割线...:headerDividerEnabled 如果设置成 false 则不再 headerView 之前绘制分隔条 Adapter 简介 使用 ListView 的话就离不开 Adapter 了。...如果 item 中的布局有点复杂的话,item 中的每个控件又需要设置不同的值,那么 item 中的每个布局的内容就又对应 HashMap 中的值了。...getView 中不要出现大量的对象 最好把创建对象放到 ViewHolder 中 加载图片,滑动的时候不要加载图片,会造成 ListView 卡顿,需要在监听器里面判断 ListView 的状态。
在上一篇博文中,我们实现了仿美团的下拉刷新。而今天的主题还是与 ListView 有关,这次是来实现具有视差效果的 ListView 。 那么到底什么是视差效果呢?...一起来看效果图就知道了: ListView视差效果图gif 我们可以看到 ListView 的 HeaderView 会跟随 ListView 的滑动而变大,HeaderView里的图片会有缩放效果。...而 setDrawableId(int id) 就是给 headerView 设置相关图片的。...已经到顶端,但是用户手势还是向下拉),去动态地设置 headerView 的高度以及 headerView 的 scale 值。...这样就可以产生 headerView 变高以及图片放大的效果了。 接下来要考虑的问题就是当用户松开手指时,要恢复回原来的样子。
下拉刷新、加载更多、标记已读、轮播条、缓存 下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它...1.自定义带下拉刷新,加载更多的listview public class RefreshListView extends ListView implements OnScrollListener,...android:textColor="#ff0000" android:textSize="18sp" /> 4.在页签详情页中调用自定义listview的方法...); // 将头条新闻以头布局的形式加给listview lvList.addHeaderView(headerView); // 设置下拉刷新监听 lvList.setOnRefreshListener...= new BitmapUtils(mActivity); utils.configDefaultLoadingImage(R.drawable.topnews_item_default);// 设置默认图片
,xutils的configDefaultLoadingImage()方法,设置默认图片 ,还有 BitmapFun 、ImageDownloader也能加载网络图片 xutils的注解,不需要fandviewbyid...了,但是前提是需要注入事件ViewUtils.inject(this, view); 可以给listview加个头,那样头也跟着滑动了,头上还能加头,lvList.addHeaderView(headerView...android:background="@android:color/darker_gray"//padding了一个dp,背景是灰色的,图片外就显示出了一个边框 android:layout_alignParentLeft...); // 将头条新闻以头布局的形式加给listview lvList.addHeaderView(headerView); return view; } @Override public void...= new BitmapUtils(mActivity); utils.configDefaultLoadingImage(R.drawable.topnews_item_default);// 设置默认图片
RecyclerView、CardView为用于显示复杂视图的新增Widget。接下来看看如何使用吧。...RecyclerView RecyclerView介绍 RecyclerView作为替代ListView使用,它更先进,更灵活,RecyclerView标准化了ViewHolder,ListView中convertView...注意的是:RecyclerView不提供ListView中的setOnItemClickListener方法,我们可以在ViewHolder中添加类似的点击事件。...所以它的性能比以前应该好了不少。 LayoutManager:这个LayoutManager类决定视图被放在画面中哪个位置,但这只是它的众多职责之一。它可以管理滚动和循环利用。...HeaderView + RecyclerView 实现方式 RecyclerView上拉更多 RecyclerView具体使用不讲了,今天我们顺便讲一下如何在RecyclerView加上拉更多的效果吧
下拉刷新------- 1.addHeaderView必须在setAdapter之前调用 2.将paddingTop设置一个headerView高度的负值去隐藏它 getHeight()和getMeasuredHeight...ListView implements OnScrollListener{ private View headerView;//headerView private ImageView iv_arrow...; tv_state.setText("正在刷新..."); break; } } /** * 完成刷新操作,重置状态,在你获取完数据并更新完adater之后,去在UI线程中调用该方法...private MyAdapter adapter; private Handler handler = new Handler(){ public void handleMessage(android.os.Message...原来的数据 - "+i); } // final View headerView = View.inflate(this, R.layout.layout_header, null);
然后我们需要两个数据辅助类,类似上述,一个是专门来保存在GridView中要显示的每张图片的信息,例如它的url、name、id等等,暂称该辅助类为 UserImgs,大家可以随便增删,另一个是总的专门保存...listView中的item的数据,我们称它为UserInfo,这里,说明下,因为每条 item 都有一个自己的GridView,也就是说,UserInfo中必须要有一个UserImgs类实例,用来存储图片信息...name; //图片的名称 10 public String urls; //图片的 url 11 12 public int getId() { 13 return...的数据适配的重写类 声明,这个例子和下面的例子的图片显示都采用了开源框架---imageLoder。... GridView 数据适配类的作用主要是把图片都显示到 GridView上面,再返回此 View,然后显示到 ListView 的 item 上面。
Studio 中的预览效果图 ?...> 在Android Studio 中的预览效果图 和 运行效果图 ?...如这里:拖拖拖 ~~垃机C4D,类似的我们还可以找到很多,又如:环游东京30天:GIF版旅行指南 那我们就选择 环游东京30天:GIF版旅行指南 中的这张: ?...ListView/> 在 Android Studio 中的预览效果图 和 运行效果图 ?...支持在Android Studio Xml 编辑器中预览 效果 支持分别在 Default(默认)、Xml、JavaCode 等三个地方设置 Header 和 Footer.
但如果在列表如ListView中,用错了问题就大了。ListView中的getView方法需要计算列表条目,那就必然需要确定ListView的高度,onMesure才能做测量。...4、ListView中item点击事件无响应 listView的Item点击事件突然无响应,问题一般是在listView中加入了button、checkbox等控件后出现的。这个问题是聚焦冲突造成的。...解决办法:在ListView的根控件中设置(若根控件是LinearLayout, 则在LinearLayout中加入以下属性设置)descendantFocusability属性。...服务端返回荣誉图片后,由于是3列显示的方式,只需要计算需要显示几行,然后给定行间距和图片的高度,再设置setLayoutParams就行了。...一开始我发现一个acitivity中的scrollView滑动一顿一顿的,而实际上没有嵌套任何的列表控件如ListView、GridView,包含的无非是一些TextView、ImagView等。
领取专属 10元无门槛券
手把手带您无忧上云