android listview

1)ListView属性值:

http://blog.csdn.net/meng_lw/article/details/7974166

  1.scrollbars属性,作用是隐藏listView的滚动条     已验证

    android:scrollbars="none"或者setVerticalScrollBarEnabled(true);不活动的时候隐藏,活动的时候也隐藏

    scrollbars可以设置为水平滚动条和垂直滚动条 horizontal或vertical

   1)设置滚动条的位置

    android:verticalScrollbarPosition="left"  滚动条到左边

    2)android:scrollbarStyle="insideOverlay" 

    inside表示显示在padding区域的内侧

    outside表示显示在padding区域的外侧。

    Inset表示将自动增加padding以显示ScrollBar(这意味着内容区域将缩 小),

    Overlay表示不会增加padding以显示ScrollBar,而是浮动在内容上面(可能会遮住内容)

    3)scrollBar的淡出效果

        android:fadeScrollbars="false" 会一直显示滚动条;设置为true会实现滚动条的自动隐藏和显示
        android:scrollbarDefaultDelayBeforeFade    设置N毫秒后开始淡化,以毫秒为单位。
        android:scrollbarFadeDuration   设置滚动条淡出效果(从有到慢慢的变淡直至消失)时间,以毫秒为单位

    4)自定义滑块   ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块),其定制的属性为:

        android:scrollbarThumbHorizontal="@drawable/ic_launcher" 
        android:scrollbarThumbVertical="@drawable/ic_launcher"
        android:scrollbarTrackHorizontal="@drawable/ic_launcher"
        android:scrollbarTrackVertical="@drawable/ic_launcher"
     5)设置宽度  android:scrollbarSize="0dp"

    6)fastScrollEnabled属性

    android:fastScrollEnabled="true"或者myListView.setFastScrollEnabled(true); 来控制启用

    还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块.

 

  4.drawSelectorOnTop属性  默认为false     已验证  

    android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到

    android:drawSelectorOnTop="false"点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

      这个属性设置为true的时候是可以看到文字的,只不过不那么明显

 

  5.fadingEdge属性,上边和下边有黑色的阴影   已验证

    在 ListView 滑动到顶部或者是底部的时候,会有黄色或者蓝色的阴影出现。

    在 2.3 版本之前可以在 ListView 的属性中通过设置 android:fadingEdge="none" 来解决问题.

    但是在 2.3 及以上版本这中方法是无效的,可以通过重写 ListView 用代码来设置模式,禁止其阴影的出现,以免影响美观。    

        if (Integer.parseInt(Build.VERSION.SDK) >= 9) {
            this.setOverScrollMode(View.OVER_SCROLL_NEVER);
        }

 

  6.divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线  已验证    

    1)android:divider="@drawable/list_driver"  其中  @drawable/list_driver 是一个图片资源,

      如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了

    2)android:headerDividersEnabled="true"  headview下是否加分隔线

        android:footerDividersEnabled="true"  footview是否加分隔线

      listview添加了headview和footview之后,可以用上面两个变量设置是否在head之下或foot之上添加分割线

 

  7.cacheColorHint属性 

    很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性 android:background="@drawable/bg",不 过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。

    如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透 明(#00000000)就可以了

 

  8.transciptMode   ?

    需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。

  9.stackFromBottom   已验证

    android:stackFromBottom="true"   自动滚动到最下面

-------------------------------------------------------------------------

2)listview的item的高度自适应内容

未解决

 

3)listview显示性能优化,防止内存溢出

  这里重点在convertView上, getView(int position, View convertView, ViewGroup parent)

convertView把由于拖动消失的item进行了重用,这样就不用重新new了.节省可内存.

另外如果由自定义VIew的话还要用viewholder

 1 public View getView(int position, View convertView, ViewGroup parent) {
 2          //System.out.println("getView " + position + " " + convertView);
 3          ViewHolder holder = null;
 4          if (convertView == null) {
 5              convertView = mInflater.inflate(R.layout.lv_item, null);
 6              holder = new ViewHolder();
 7              holder.textView = (TextView)convertView.findViewById(R.id.tv_text);
 8              convertView.setTag(holder);
 9          } else {
10              holder = (ViewHolder)convertView.getTag();
11          }
12          holder.textView.setText(mData.get(position));
13          return convertView;
14      }
15 }
16  
17  public static class ViewHolder {
18      public TextView textView;
19  }

 

4)布局文件填充成View对象的三种方法

View v = View.inflate(MainActivity.this, R.layout.item_listview, null);
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View v2 = inflater.inflate(R.layout.item_listview, null);
LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View v3 = inflater2.inflate(R.layout.item_listview, null);

5)mvc模型对应

Model:要显示的内容           datalist

View:用户直接看到的页面  ListView

Control:控制内容显示         Adapter

 

BaseAdapter------------------ArrayAdapter数组数据,只能显示单一数据

                     -----------------SimpleAdapter数据存在List<Map>里面,可以显示复杂页面

------------------------------------------------------

listview下拉刷新  显示XXX制作之类的

------------------------------------------------------

ListView动态高度

http://blog.csdn.net/h3c4lenovo/article/details/8256472

------------------------------------------------------

listview分页加载

http://www.open-open.com/lib/view/open1330132229874.html

http://blog.csdn.net/liuhe688/article/details/6852523

http://www.jb51.net/article/31974.htm

http://www.linuxidc.com/Linux/2014-05/101539.htm

-----------------------------------------------------

ScrollView里面套圆角listview

http://b275518834201204034558.iteye.com/blog/1482140

ListView内嵌GridView

http://www.apkbus.com/android-50889-1-2.html

-----------------------------------------------------

综合

http://zkl-1987.iteye.com/blog/1051311

-----------------------------------------------------

 listview 图片下拉放大

http://my.oschina.net/zhulunjun/blog/209683

----------------------------------------------------

http://blog.sina.com.cn/s/blog_618199e601010701.html

posted @ 2015-05-10 22:00  firerdong  阅读(181)  评论(0编辑  收藏  举报