一、机制

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. JAVA语言的素数判断,随机数,函数调用

    近来刚学JAVA,就从JAVA写起吧,JAVA判别素数,其实方法和C/C++没什么区别,主要就是想谈一下,其中包括的3个点. (1)JAVA语言产生随机数,random函数,定义参数max的作用是给出 ...

  2. mongoDB用java实现增删改查

    package mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mo ...

  3. phpeclipse

    http://phpeclipse.sourceforge.net/update/stable/1.2.x/

  4. C语言宏的特殊用法和几个坑(转)

    总结一下C语言中宏的一些特殊用法和几个容易踩的坑.由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档. 宏基础 宏仅仅是在C预处理阶段的一种 ...

  5. QT绘制半透明窗体(改写paintEvent,超级简单)

    在派生类中重载QDialog的void paintEvent(QPaintEvent *)事件,在这个函数中加入以下代码 QPainter painter(this);    QLinearGradi ...

  6. BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按F ...

  7. STL--stack/queue的使用方法

    stack(栈)和queue(队列)也是在程序设计中经常会用到的数据容器,STL为我们提供了方便的stack(栈)的queue(队列)的实现. 准确地说,STL中的stack和queue不同于vect ...

  8. PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题

    php中关于反斜线转义: php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime      设置为on时,当数据遇到 单引号' 和 双引号&quo ...

  9. 在web page中使鼠标右击失效的几种方法

    这里主要介绍两种方法,一种是使用js来处理,还有一种是在html属性中设置. 方法一:js 1: <script language="javascript"> docu ...

  10. 使用ActionBar实现Tab导航(快速生成Tab样式)

    效果如图: MainActivity.java具体实现: package com.rainmer.actionbartab; import android.app.ActionBar; import ...