一、机制

ListView机制 - 先运行getCount。然后运行getView。

假设getCount返回0,不运行getView

Gallery convertView不会复用。每次都返回NULL

二、问题整理

ListView最以下一个item没有横线(Divider)?
listview的布局高使用wrap_content,应该使用fill_parent

去除行与行之间的黑线:
List.setDivider(null); 

切记ListView高度不能设置成wrap_content
会导致多次整个页面刷新


动态改动Item高度 - ItemRootView.getLayoutParams().height = heightValue;
     尝试使用margin、Child height都无效

Item Root设置高度失效,能够通过设置子视图高度解决。

(ListView ItemView 子视图设置margin无效)

两层。内层使用margin,外层使用FrameLayout失效,改成Linearlayout有效。比如Htc G12 就会失效。


三、经常使用属性
ListView Item selector
item.xml 外层LinearLayout设置selector.xml后,内层再设置bakcground没有选中效果。

     由于点击后下层事实上改变了。可是被上层给盖住了,这是常识。

。。。

点击父视图,子视图是否被选中,比如button

去除选中时的黄色底色

android:listSelector="#00000000" 
android:listSelector="@null"   // 这样设置无效


1. 是否显示ScrollBar

2. 关闭OverScroll 。 有些手机上OverScroll有类似FadingEdge效果

listView.setOverScrollMode(View.OVER_SCROLL_NEVER);


3. 去除拖动时默认的黑色背景:

android:cacheColorHint="#00000000"



5. ListView刷新后自己主动滚到最底部:

List.setSelection(msgList.getAdapter().getCount()-1); 



6. 去除ListView滑到顶部和底部时边缘的黑色阴影:

android:fadingEdge="none"  






** 异常
get item type 从0開始。出现下面异常说明。getItemViewType 返回类型个数超过getViewTypeCount。

当前异常是getItemViewType 返回3种类型的id。而getViewTypeCount
= 2



java.lang.ArrayIndexOutOfBoundsException: length=2; index=2

     at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:7188)

     at android.widget.ListView.measureHeightOfChildren(ListView.java:1338)

     at android.widget.ListView.onMeasure(ListView.java:1238)

     at android.view.View.measure(View.java:15729)

     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4854)

     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)

     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)

     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)

     at android.view.View.measure(View.java:15729)

     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:645)

     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:425)

     at android.view.View.measure(View.java:15729)

     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4854)

     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)

     at android.view.View.measure(View.java:15729)

     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4854)

     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)

     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)

     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)

     at android.view.View.measure(View.java:15729)

     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4854)

     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)

     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2344)

     at android.view.View.measure(View.java:15729)

     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1948)

     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)

     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1300)

     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)

     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4498)

     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)

     at android.view.Choreographer.doCallbacks(Choreographer.java:562)

     at android.view.Choreographer.doFrame(Choreographer.java:532)

     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)

     at android.os.Handler.handleCallback(Handler.java:725)

     at android.os.Handler.dispatchMessage(Handler.java:92)

     at android.os.Looper.loop(Looper.java:137)

     at android.app.ActivityThread.main(ActivityThread.java:5105)

     at java.lang.reflect.Method.invokeNative(Native Method)

     at java.lang.reflect.Method.invoke(Method.java:511)

     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

     at dalvik.system.NativeStart.main(Native Method)



onScroll 滚动状态推断
onScrollListener
SCROLL_STATE_IDLE 滑动后精巧

SCROLL_STATE_FLING 手指离开屏幕后,惯性滑动

SCROLL_STATE_TOUCH_SCROLL 手指在屏幕上滑动

測试相关
ActivityThread中代码,此代码调用onSaveInstanceState。mInstrumentation负责调用on***方法
mInstrumentation.callActivityOnSaveInstanceState(r.activity, state);



GridVie 不显示滚动栏

android:scrollbars="none"与

setVerticalScrollBarEnabled(true);

Android ListView 常见问题与使用总结的更多相关文章

  1. android ListView 九大重要属性详细分析、

    android ListView 九大重要属性详细分析. 1.android ListView 一些重要属性详解,兄弟朋友可以参考一下. 首先是stackFromBottom属性,这只该属性之后你做好 ...

  2. Android ListView onItemClick Not Work

    Android ListView onItemClick Not Work ListView item中有Button和RadioButton的时候,它的Item点击事件不起作用,需要设置item的属 ...

  3. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d3e3ab10c62013697408 作者:黄宁源 一,背景 Recy ...

  4. Android ListView 常用技巧

    Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...

  5. Android listview addHeaderView 和 addFooterView 详解

    addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 需要注意的是添加布局的时候应该添加从父容器开始添加 ...

  6. Android ListView滑动过程中图片显示重复错乱闪烁问题解决

    最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...

  7. Android WebView常见问题及解决方案汇总

    Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是 ...

  8. Android --ListView分页

    参考博客:Android ListView分页加载(服务端+android端)Demo 监听OnScrollListener事件 class OnListScrollListener implemen ...

  9. Android ListView ListActivity PreferenceActivity背景变黑的问题ZT

    Android ListView ListActivity PreferenceActivity背景变黑的问题 ListView在滚动时背景会变暗甚至变黑,这个要从Listview的效果说起,默认的L ...

随机推荐

  1. ThinkPHP第十一天(关联模型使用,独立分组配置,MySQL concat用法)

    1.关联模型的使用 定义方式:新建一个类文件UserRelationModel.class.php Class UserRelationModel extends RelationModel{ pro ...

  2. 【转载】Google Analytics 使用图文全攻略

    转载自:Google Analytics 使用图文全攻略 最近一段时间,因为工作的需要,小励使用GA(GA是Google Analytics的简称)比较频繁,所以花时间研究了一下,从不太了解到会使用( ...

  3. Linux网卡设置

    http://blog.chinaunix.net/uid-20149676-id-1733254.html

  4. 用merge into进行性能优化

    有时候开发组有这么一个需求,一个表和它的备份表,把备份表中的某些字段替换到原表中,当数据量非常大的时候就很很慢,这个时候如果我们用merge into往往会提高几倍的性能,下面我们来做个实验: SQL ...

  5. 剖析MFC六大关键技术(五六)--消息映射与命令传递

    说到消息,在MFC中,“最熟悉的神秘”可算是消息映射,那是我们刚开始接触MFC时就要面对的东西.有过SDK编程经验的朋友转到MFC编程的时候,一下子觉得什么都变了样.特别是窗口消息及对消息的处理跟以前 ...

  6. GDKOI2016

    天若有情天亦老 月若无恨月常圆 Day1 score cardcaptor AAAAAAAATT protal WWWWWWWWWW treasurehunt AAAAWXXXXX map AAATT ...

  7. Android 开机动画源码分析

    Android系统在启动SystemServer进程时,通过两个阶段来启动系统所有服务,在第一阶段启动本地服务,如SurfaceFlinger,SensorService等,在第二阶段则启动一系列的J ...

  8. [转]Java Code Examples for android.util.JsonReader

    [转]Java Code Examples for android.util.JsonReader The following are top voted examples for showing h ...

  9. 【第一篇:C++与opencv】图片的读取和显示

    这里介绍C++版本的opencv,和C语言版本有些不同,先看代码^_^ [编译环境:opencv2.4.4和VS2008] #include "stdafx.h" #include ...

  10. 浙江工商大学15年校赛C题 我删我删,删删删 【简单模拟】

    Description: 有一个大整数.不超过1000位.假设有N位.我想删掉其中的任意S个数字.使得删除S位后,剩下位组成的数是最小的. Input: 有多组数据数据,每组数据为两行.第一行是一个大 ...