一、机制

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. (Problem 57)Square root convergents

    It is possible to show that the square root of two can be expressed as an infinite continued fractio ...

  2. 高级UNIX环境编程10 信号

    信号是软件中断,提供一种处理异步事件的方法 <signal.h> sigaction()

  3. 安装ADT 提示 android ADT Unable to connect to repository

    以往安装ADT根本就不是个问题,可是现在就是个大问题了,联通的宽带网络连www.google.com.hk都打不开,你叫我们这些P民怎么活? https://dl-ssl.google.com/and ...

  4. SSL/TLS原理详解

    本文大部分整理自网络,相关文章请见文后参考. 关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 ,如果你想快速自建CA然后签发数字证书,请移步 基于OpenS ...

  5. JavaEE Tutorials (6) - 使用嵌入式企业bean容器

    6.1嵌入式企业bean容器概述826.2开发嵌入式企业bean应用82 6.2.1运行嵌入式应用83 6.2.2创建企业bean容器83 6.2.3查找会话bean引用84 6.2.4关闭企业bea ...

  6. Gartner 认可 Microsoft 为应用程序平台即服务的领导者

    对于 Windows Azure 而言,2013 年是了不起的一年.客户使用量每月都创新高:4 月份 Windows Azure 基础结构服务一经正式发布即受到前所未有的青睐,成为重要的里程碑.Gar ...

  7. 基于visual Studio2013解决C语言竞赛题之0402奇偶求和

      题目 解决代码及点评 这道题考察我们对循环和判断的综合应用 #include <stdio.h> #include <stdlib.h> #include < ...

  8. Android Intent 解析之二

    服务端Intent运行过程: Sticky:这个类型的BroadCast表示某些Intent须要被保留,当新的应用起来后,须要关注这个消息,可是呢,又不须要启动这个应用来接收此消息,比方耳机插入等消息 ...

  9. cocos2d-html5 简易 下拉表单 控件

    刚才在CH5的群里问了问  有没有大侠写过 下拉表单控件啊!  没人鸟窝 ,DZ老师表示非常伤心啊  ,于是乎  自己写一个把 共享给大家. 效果图上一个  仅仅实现了一个最最主要的控件  非常eas ...

  10. 版本管理工具:linux下svn的基本使用

    参考: linux下安装SVN    http://jingyan.baidu.com/article/3c343ff7039de20d37796306.html svn客户端使用linux篇  ht ...