一、机制

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. BZOJ 1644: [Usaco2007 Oct]Obstacle Course 障碍训练课( BFS )

    BFS... 我连水题都不会写了QAQ ------------------------------------------------------------------------- #inclu ...

  2. Iterator(迭代器)接口 --对象循环遍历

    <?php class MyIterator implements Iterator { private $var = array(); public function __construct ...

  3. android Graphics(四):canvas变换与操作

    前言:前几篇讲解了有关canvas绘图的一些操作,今天更深入一些,讲讲对画布的操作,这篇文章不像前几篇那么容易理解,如果以前没有接触过画布的童鞋可能比较难以理解,为什么会这样.我尽量多画图,让大家更清 ...

  4. 程序中使用事务来管理sql语句的执行,执行失败时,可以达到回滚的要求。

    1.设置使用事务的SQL执行语句 /// <summary> /// 使用有事务的SQL语句 /// </summary> /// <param name="s ...

  5. c++,多继承造成的二义性及解决办法

    #include <iostream> using namespace std; //------------------------------- class A1{ public: i ...

  6. [Swust OJ 1094]--中位数(巧用set,堆排序)

    题目链接:http://acm.swust.edu.cn/problem/1094/ Time limit(ms): 1000 Memory limit(kb): 32768   中位数(又称中值,英 ...

  7. Basic DataList

    一,效果图. 二,源代码. <!DOCTYPE html><html><head> <meta charset="UTF-8"> & ...

  8. C#路径,文件,目录,I/O常见操作

         C#路径,文件,目录,I/O常见操作 文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供 ...

  9. ThinkPHP-3.2.3学习

    一.下载安装 核心包:不用解释,最减版本 完整包:包括扩展功能(验证码.session等) 二.调试 ----www ---thinkphp_3 Application                 ...

  10. javascript 简单实现对两个数组相似度的检验

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...