一、机制

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. ASP.NET 导入excel 数据

    1,需要给上传文件的目录给予权限 2. <asp:FileUpload ID="FileUpload1" runat="server" /> < ...

  2. Python网络编程——设备名和IPv4地址

    1.快速查看主机名和对应的IP地址小程序 import socket def print_machine_info(): # 定义print_machine_info()类 host_name = s ...

  3. [LeetCode]题解(python):062-Unique Paths

    题目来源: https://leetcode.com/problems/unique-paths/ 题意分析: 给定两个整型m,n.判断从一个m×n的矩阵里面,从(0,0)走到(m-1,n-1)一共有 ...

  4. poj 2515 Birthday Cake

    /** 大意 : 求1^m + 2^m + 3^m + 4^m +....+ n^m 解题步骤: 先构造从0到m的第1阶差分序列,然后以下所有2---->p阶的差分表. 令C[n+1][1]=n ...

  5. 【c语言】求最大值

    一.我个人觉得求最大值比较简单的一种方法(当然同时求最大值和最小值时稍微改改也能行) #include <stdio.h> int main(void) { int f, i, max; ...

  6. Chrome Firefox 自定义背景色

    Chrome有个自定义背景色的文件  Custom.css 默认里面什么字都没写 html, body {background-color: #e0dcc0!important;}      这个颜色 ...

  7. OGNL逻辑标签,UI标签

    逻辑标签 public class IndexAction extends BasicAction{ private static final long serialVersionUID = 1L; ...

  8. vim Ctags 和taglist安装和使用

    Ctags是一个用于从程序源代码树产生索引文件(或tag文件),从而便于文本编辑器来实现快速定位的实用工具.在产生的tag文件中,每一个tag的入口指向了一个编程语言的对象.这个对象可以是变量定义.函 ...

  9. gzip解压压缩的字符串数据

    import urllib2 from StringIO import StringIO import gzip def loadData(url): request = urllib2.Reques ...

  10. 【Java】:多线程下载

    import java.io.InputStream; import java.io.RandomAccessFile; import java.net.URL; import java.net.UR ...