zoukankan      html  css  js  c++  java
  • 安卓学习-界面-ui-ListView

    ListView继承自AbsListView

    AbsListView属性

    XML属性 代码 说明
     android:choiceMode

     setChoiceMode(int choiceMode)

    AbsListView.CHOICE_MODE_SINGLE
    AbsListView.CHOICE_MODE_MULTIPLE
    AbsListView.CHOICE_MODE_MULTIPLE_MODAL

    none :无选择模式

    singleChoice:允许单选

    multipleChoice:允许多选

    multipleChoiceModal:允许多选

    好像要用android.R.layout.simple_list_item_checked才有效果

    ArrayAdapter<String> items=
    new ArrayAdapter<String>(getApplicationContext(), 
    android.R.layout.simple_list_item_checked, new String[]{"浙江","上海","北京"});
    lv.setAdapter(items);
     android:drawSelectorOnTop  setDrawSelectorOnTop(boolean onTop) 

    设置为true, 按住记录不放,颜色会覆盖文字,文字就不是很清楚了

    true效果

    false效果

    不知道这样做的用意是什么?

     android:fastScrollEnabled  

     是否显示快速滚动的按钮,右边那个蓝色的就是,手指快速滚动的会后会显示出来

     android:listSelector  setSelector(Drawable sel) 

     在选中的记录上绘制drawable,如果设置android:drawSelectorOnTop为true,

    则该条记录会被完全覆盖,包括后面的√

     android:scrollingCache  

     当为真时,列表滚动使用绘图缓存。该选项使渲染更快,但占用更多的内存。 默认值为真

    不知道有什么用

     android:smoothScrollbar  setSmoothScrollbarEnabled(boolean enabled)

    完全看不懂

     为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。 默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。 当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的 过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的 可见条目来决定滚动条的属性

     android:stackFromBottom  setStackFromBottom(boolean stackFromBottom)

     从底部开始显示

     android:textFilterEnabled  setTextFilterEnabled(boolean textFilterEnabled)

     是否启用过滤,只有adapter设置了filter时才有效果

    这样设置

            ArrayAdapter<String> items=
                    new ArrayAdapter<String>(getApplicationContext(), 
                            android.R.layout.simple_list_item_checked,list);
            items.getFilter().filter("测试9");

    效果,只显示带 测试9的条目了

     android:transcriptMode

     setTranscriptMode(int mode)

    AbsListView.TRANSCRIPT_MODE_DISABLED
    AbsListView.TRANSCRIPT_MODE_NORMAL
    AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL

    属性

    disabled:

    normal:添加记录时当最后一列可见时会自动往下滚动

    alwaysScroll:添加记录时,直接滚动到最后一条新增加的记录

    如何增加记录呢

    如下:

            btn=(Button)findViewById(R.id.button1);
            btn.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    //list里增加记录
                    list.add("新增加的");
                    //刷新记录
                    items.notifyDataSetChanged();
                }
            });

    效果:添加后直接滚动到最后了,这个效果还不错

    ListView属性

    XML属性 代码 说明
    android:divider  setDivider(Drawable divider)  分隔条
    android:dividerHeight  setDividerHeight(int height)

    分隔条高度

    android:entries  

    直接指定资源文件,代码都不用写了

    array1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="items">
            <item >测试1</item>
            <item >测试2</item>
            <item >测试3</item>
            <item >测试4</item>
        </string-array>
    </resources>
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/color1"
            android:entries="@array/items"
         />
     android:footerDividersEnabled  setFooterDividersEnabled(boolean footerDividersEnabled)

    设置为false,则不再footer和view之间绘制分隔线

    1.添加footer按钮

            View view=LayoutInflater.from(MainActivity.this).
                    inflate(R.layout.footer, null);
            //必须在setAdapter前设置,否则没效果
            lv.addFooterView(view);    

    2.设置为true时

    3.设置为false时,footer前少了根线

    android:headerDividersEnabled

     setHeaderDividersEnabled(boolean headerDividersEnabled)

    设置为false,则不在header和view之间绘制分隔先

    例子1

    listview最后增加一个加载更多的按钮

    activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <!-- android:transcriptMode 设置成alwaysScroll,这样点击添加按钮后会自动滚动到最后 -->
        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:choiceMode="singleChoice"
            android:background="@color/color1"
            android:divider="#000"
            android:dividerHeight="1dp"
            android:transcriptMode="alwaysScroll">
        </ListView>
    </LinearLayout>
    View Code

    footer.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="加载更多" />
    
    </RelativeLayout>
    View Code

    MainActivity.java

    public class MainActivity extends Activity {
    
        ListView lv;
        Button btn;
        ArrayList<String> list;
        ArrayAdapter<String> items;
        int index=1;
        
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            lv=(ListView)findViewById(R.id.listView1);
    
            list=new ArrayList<String> ();
            
            for(int i=1;i<=10;i++){
                list.add("测试"+index);
                index=index+1;
            }
    
            items = new ArrayAdapter<String>(getApplicationContext(), 
                            android.R.layout.simple_list_item_checked,list);
    
            View view=LayoutInflater.from(MainActivity.this).
                    inflate(R.layout.footer, null);
            btn=(Button)view.findViewById(R.id.button1);
            btn.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    for(int i=1;i<=10;i++){
                        list.add("测试"+index);
                        index=index+1;
                    }
                    items.notifyDataSetChanged();
                }
            });
            
            //必须在setAdapter前设置,否则没效果
            lv.addFooterView(view);        
            
            lv.setAdapter(items);
        }
    }
    View Code
  • 相关阅读:
    土木工程材料0732
    07 具有无关项的逻辑函数及其化简
    06 逻辑函数化简法
    AD中板子挖孔开槽
    电容式触摸按键原理
    LTspice
    三相电
    7、简单电阻容元件模型的创建
    cadence17.4在笔记本下设置菜单显示不全的解决办法
    36. 二叉搜索树与双向链表
  • 原文地址:https://www.cnblogs.com/weijj/p/3951326.html
Copyright © 2011-2022 走看看