ListView ListView的意思是列表视图,是应用最广泛的一种视图,例如联系人,功能列表,菜单等等都会用到ListView。...简单的说显示一个ListView的前提有:ListView布局、ListView中的item布局和Adapter,最后通过setAdapter将视图和数据绑定。...对于ListView的优化在后边的Demo中会提到。 ListView的常用属性: android:lsitSelector:设置列表项被点击时的背景色。...ScrollView 滚动视图也是很常见的视图,当一个屏幕中内容很多时,我们可以通过滚动来查看所有内容。...因为我在布局文件中已经自定义了标题栏,所以需要把系统自带的标题栏隐藏。
前言介绍: 关于 ListView 我们大家都应该是非常的熟悉了,在 Android 开发中是经常用到的,今天就再来回顾一下,ListView 的使用方法,和一些需要优化注意的地方,还有日常开发过程中的一些小技巧和经验...假如当屏幕一次可以显示 x 个 item 时(不用是完整的),那么 ListView 会创建 x+1 个视图;当第1个 item 离开屏幕的时候,此时这个 item 的 View 就会被回收,再入屏的...形式的数据绑定到列表中作为数据源,支持泛型操作 步骤: 在 xml 文件布局上实现 ListView 在 Activity 中定义数据源(列表或者数组) 构造 ArrayAdapter 对象,设置适配器...extends Map 创建 SimpleAdapter 适配器 将 SimpleAdapter 适配器绑定到 ListView 中 完事 具体实现 在 xml 中添加 ListView LinearLayout...的长度逐一绘制 ListView 的每一行 获取数据时,通过 getItem() getItemId() 来获取 Adapter 中的数据 重点看一下 getView 实现方式一: 直接返回索引对应的数据的视图
在某些GUI工具包中,可以通过在程序代码中整体性地声明复合的View对象来避免这个问题。因为在访问这个组件时,无非就是调用getter方法或访问字段。...当然,在Android中也可以做到这一点,只不过代码会复杂繁琐一些。...在持有者模式中,Tag标签用来保存对象,而对象又用来保存要使用的子组件。在将持有者添加到视图后,只要用到了行,就可以轻而易举的访问其子组件,而不必再调用findViewById()方法了。...三、列表头和列表尾的使用 在实际使用ListView时,经常会有这样的需求:当位于ListView最顶部的时候,显示一个搜索框可以搜索列表内容,或者显示下拉刷新;当位于ListView最底部的时候...给ListView添加HeadView和FootView,当ListView滑动至列表第一项时使HeadView滑动出现,当ListView滑动至列表最后一项时使FootView滑动出现。
前言 ListView在Android开发中十分常见 今天,我将为大家带来ListView与AdapterView全面解析,含其特点、工作原理等,希望你们会喜欢。...,ListView不会为每一个数据创建一个视图,而是采用了Recycler组件,用于回收 & 复用 View 当屏幕需显示x个Item时,那么ListView会创建 x+1个视图;当第1个Item...离开屏幕时,此Item的View被回收至缓存,入屏的Item的View会优先从该缓存中获取 注: 只有Item完全离开屏幕后才可复用,这也是为什么ListView要创建比屏幕需显示视图多1个的原因...:缓冲 显示视图 即:第1个Item离开屏幕是有过程的,会有1个 第1个Item的下半部分 & 第8个Item上半部分同时在屏幕中显示的状态,此时仍无法使用缓存的View,只能继续用新创建的视图View...生成方式 生成列表视图(ListView)的方式主要有两种: 直接用ListView进行创建 让Activity继承ListActivity 2. xml文件配置信息 LinearLayout xmlns
ArrayAdapter具有说明来告诉它自己如何创建列表项视图,并返回给ListView,当屏幕被占满后 ListView 将停止向ArrayAdapter 寻求更多的列表项,列表项视图仅在需要时才创建...重复使用它们,ListView 将请求列表中特定位置的视图,同时传入之前用过的视图。...比如,ListView 请求的是位置 6 处的项,并向 ArrayAdapter 传入可重复使用的以前视图,ArrayAdapter 可以通过在回收过的视图里放入数据,使用回收的视图,然后再接着比如通过调用...并且知道如何将每项呈现为视图,与此同时 ListView 负责在屏幕上显示这些视图,检测用户的触摸手势,并跟踪用户是否位于整个列表中。 ...> LinearLayout> 在某一个activity中,比如NumbersActivity.java .....
使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。...convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。...单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。...(int) – 根据position返回相应的Item 3)根据view item的类型,在getView中创建正确的convertView 3.案例 import java.util.ArrayList...(listAdapter); } class MyAdapter extends BaseAdapter{ Context mContext; LinearLayout
工作原理:当屏幕需要显示x个item时,那么ListView只会创建x+1个视图,当第一个item离开屏幕时,此item的view就会被拿来重用(用于显示下一个item(即第x+1个)的内容)。...工作原理实例 假如屏幕只能显示7个item,那么ListView只会创建(7+1)个item的视图。当第1个item离开屏幕时,此item的view就会被拿来重用(用于显示第8个item的内容)。...生成方式 生成列表视图(ListView)的方式主要有两种: - 直接用ListView进行创建 - 让Activity继承ListActivity 2. xml文件配置信息 LinearLayout...工作原理 当屏幕需要显示x个item时,那么ListView只会创建x+1个视图,当第一个item离开屏幕时,此item的view就会被拿来重用(用于显示下一个item(即第x+1个)的内容)。...当第1个item离开屏幕时,此item的view就会被拿来重用(用于显示第8个item的内容)。原理如下图显示 !
答案当然是否,那我想要实现自己非常酷酷的ListView时候,只有自己动手实现。不过,谷歌在2015在v4开发包加入 豪华套餐SwipeRefreshLayout供你享用。...如果子视图为自定义视图那么必须重写该方法。...同理,当你的子视图用布局包裹的时候,其就是你自定义的,除非你的子视图只有ListView,当有多个控件时候,其默认找不到ListView监听其滑动事件,必须重写该方法。...*/ protected RecyclerView recyclerView; /*** * 该布局在没有网络的时候,显示的布局 */ protected LinearLayout...其中无任何控件,是为了扩展任何你需要的无网络时显示的界面的。
RecyclerView RecyclerView是Android在support-v7库中新推出控件,中文别名为循环器视图,它的功能非常强大,可分别实现ListView、GridView,以及瀑布流网格的显示效果...onCreateViewHolder : 创建整个布局的视图持有者。输入参数中包括视图类型,可根据视图类型加载不同的布局,从而实现带头部的列表布局。...: 1、自带ViewHolder及其重用功能,无需开发者手工重用ViewHolder; 2、未自带列表项的点击和长按功能,需要开发者自己实现点击和长按事件的监听; 3、增加区分不同列表项的视图类型...方法,界面就会根据新布局刷新列表项,这个特性特别适合于手机在竖屏/横屏之间的显示切换(如竖屏时展示ListView,横屏时展示GridView),也适合在不同屏幕分辨率如手机/平板之间的显示切换(如手机上展示...LinearLayoutManager 线性布局管理器LinearLayoutManager类似于LinearLayout,当它是垂直方向布局时,则展示效果类似于ListView;当它是水平方向布局时
虽然在Android5.X中,RecyclerView在很多地方组件取代了ListView,但是ListView的使用依然是分广泛。 本博文将对以下两方面的内容进行介绍 1....使用ViewHolder模式提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每次在getView()时重复的调用findViewById()....在自定义的Adapter中定义一个内部类ViewHolder,并将Item布局中的控件作为成员变量 2. 接下来只要在getView()方法中通过视图缓存机制来重用以缓存即可。...隐藏ListView的滚动条 3.隐藏ListView的滚动条 默认的ListView在滚动时,在右边会显示滚动条,指定当前滚定的位置。...true-不活动时隐藏,活动时显示 listView.setVerticalScrollBarEnabled(false); // 或者在
零、前言 [1] ListView 可以说是曾经的数一数二的控件,现在渐渐被RecycleView夺取锋芒。简单功能的使用ListView还是可以的。...如果可以尽量将旧的View重用 Note: You should check that this view is non-null and of an appropriate type before using...注意:在使用之前,你应该检查一下这个View是非空的并且是何时的类型 If it is not possible to convert this view to display the correct...this View is always of the right type 不均匀的列表可以指定它们的视图类型的数量,因此这个视图总是正确的类型 2.修改:MyListViewAdapter#getView...> LinearLayout> layout/item_array_with_img.xml <?
先看下效果:需求是 滑动列表 ,其中一部分视图(粉丝数,关注数这一部分)在滑动到顶端的时候不消失,而是停留在整个界面头部。...我们先分析要解决的问题: 1、如何实现列表ListView顶部视图跟随ListView一起滑动 2、如何实现滑动过程中需要停留在顶部的视图 解决: 第一个问题,实现ListView与顶部视图一起滑动,ListView...提供一个方法,addHeadView(View); 意思就是在ListView顶部添加一个View。...那么这个View就能和ListView一起滚动。 第二个问题,怎么保证界面中间的某一部分视图滑动到顶部的时候停留在顶部呢?...View1刚划出顶部的时机就是: 当滑动时 firstVisibleItem>=要悬浮的 item的position时 让View2显示 ,否则隐藏。
Android 鼓励弱耦合和组件的重用,Android 中MVC的具体体现如下: 模型(model):是应用程序的主题部分,所有的业务逻辑都应在该层(对数据库的操作、对网络等的操作都应该在model里面处理...在MVC模式中其实控制器Activity主要是起到解耦作用,将View视图和Model模型分离,虽然Activity起到交互作用,但是一般在Activity中有很多关于视图UI的显示代码,因此View视图和...在常见的View(ListView、GridView)等地方都需要用到Adapter。...Android的适配器负责为列表组件提供数据源,也负责将单独的数据元素转换为显示在列表组件中的特定视图,如ListView的适配器关系如下图所示。 ?...ArrayAdapter,创建ArrayAdapter时必须指定如下三个参数。
在布局文件中,可以定义各种视图元素,如 TextView、Button、ImageView 等。每个视图元素都可以设置一些属性,如宽度、高度、边距、背景颜色等。...这些属性可以用来控制视图元素在布局中的位置和大小。 布局文件的解析过程 当应用程序启动时,Android 系统会将布局文件解析成一个视图层次结构,然后将其加载到内存中。...逐行解析 XML 文件,创建相应的视图对象,并设置视图对象的属性。 将所有视图对象组织成一个视图层次结构。 在解析布局文件时,Android 系统会使用反射机制来动态地创建视图对象。...ViewStub 是一个轻量级的视图容器,可以在需要时动态地加载布局。...在应用程序中,列表布局是最常用的视图之一。传统的列表布局一般使用 ListView 或 GridView,但这些视图容器在性能和灵活性方面存在一定的问题。
大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧。...谷歌在Android L中新增了RecyclerView,是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。...它被作为ListView和GridView控件的继承者,在最新的support-V7版本中提供支持。...在开发RecyclerView时充分考虑了扩展性,因此用它可以创建想到的任何种类的的布局。但在使用上也稍微有些不便,比如使用步骤更加复杂,特别是一些控制点击、长压事件需要自己完成。...GridLayoutManager:在网格中展示条目,相当于之前学习的GridView。 StaggeredGridLayoutManager: 在错落的网格中展示条目,比如常见的瀑布流。
本示例显示一系列的字符串,实现的方法是在代码中完成的,没有使用布局文件。...在实际的使用过程中,可以使用 ListActivity 这种更简单的方式。...在使用列表类 ListView 时通常使用 ListActivity 来代替 Activity,ListActivity 扩展了 Activity 可以方便 ListView的使用,主要的方法包括以下几个...ListActivity 类实际上集成了 Activity 和 ListView 的功能,其内部包含了一个 ListView,使用这个类可以直接构造界面中的列表视图。...省略部分内容 } 这里的 getView()函数所返回的是 ImageView 类型,这样在列表中显示的内容就可以是一组图片了。
方式添加,在由于内存紧张导致Fragment被系统杀掉并恢复(re-instantiate)时能保留这些数据 可以在Fragment的onAttach()中通过getArguments()获得传进来的参数...= (ListView)rootView.findViewById(R.id.list);//获取自己视图里的控件引用,方法一 return rootView; } 在onCreateView...()中,还没有创建视图,所以在这里如果使用getView()方法将返回空 另一种方法是在onActivityCreated()中获取,其回调在onCreate()执行后再执行 public void onActivityCreated...listView = (ListView) getView().findViewById(R.id.list);//获取自己视图里的控件引用,方法二 ArrayAdapter arrayAdapter...中给接口变量赋值,在Fragment与Activity关联时,需要强转 public void onAttach(Activity activity) { super.onAttach(activity
在使用ListView时,会遇到当ListView列表滑动到最底端时,添加新的列表项的问题,本文通过代码演示如何动态的添加新的列表项到ListView中。...实现步骤:调用ListView的setOnScrollListener()方法设置滑动监听器,实现OnScrollListener接口的方法,判断当列表滑动到最低端时,加载新的列表项。...footer.xml描述创建View 36 mFooter = getLayoutInflater().inflate(R.layout.footer, null); 37 // 在ListView...底部添加正在加载视图 38 //注意:addFooterView方法需要在调用setListAdapter方法前调用!...中 128 if (result == null) 129 { 130 result = new TextView(MainActivity.this
优化方案有三种:1,假设自己定义适配器,那么在getView方法中推断contentView是否为空,假设为空创建contentView并返回,假设不为空直接返回contentView。...3,假设listview中显示的item太多,就要考虑分页载入了。 以下就注意介绍一下分页载入数据。首先在layout下创建listview.xml: ListView> LinearLayout> 然后创建listview_item.xml: 视图 // listView.addHeaderView(v) //设置列表顶部视图 initAdapter();...} adapter = new ListViewAdapter(items,this); } /** * 滑动时被调用
简介 ListView 列表视图,直接继承了 AbsListView,是一个以垂直方式在项目中显示 View视图的列表。...GridView 在二维滚动网格中显示项目的视图,它的继承属性与 ListView相似,并且 GridView的用法很多,主要凸显的是网格式布局,既有横向也有纵向的数据显示。...android:footerDividersEnabled:当设置为false时, ListView不会在每个页脚视图之前绘制分隔符。...android:headerDividersEnabled:当设置为false时, ListView不会在每个标题视图之后绘制分隔符。...所以,大家在平时的开发中应当尽量使用这种方式进行 getView的实现。
领取专属 10元无门槛券
手把手带您无忧上云