Android--ListView作用详解

1.ListView

  ListView列表视图控件是Android中常用的控件之一,其直接继承了AbsListView,是一个以垂直方式在项目中显示View视图的列表。ListView的数据项,来自一个继承了ListAdapter接口的适配器。

  ListView的常用属性一般就是用来设置列表的间隔、分割线、表头、表尾等属性的,常用属性有以下几个,并且Android也为其提供了对应的setter/getter方法:

  1. android:divider:使用一个Drawable或者color设置数据项之间的间隔样式。
  2. android:dividerHeight:设置数据项之间的间隔距离。
  3. android:entries:设置一个资源Id用于填充ListView的数据项。
  4. android:footerDividersEnabled:设定列表表尾是否显示分割线,如果有表尾的话。
  5. android:headerDividerEnabled:设定列表表头是否显示分割线,如果有表头的话。

  ListView提供了一些方法,用于操作ListView。这里介绍一些常用的方法,更多的请参见API文档:

  1. void addFooterView(View v):添加表尾View视图。
  2. boolean removeFooterView(View v):移除一个表尾View视图。
  3. void addHeaderView(View v):添加一个表头View视图。
  4. boolean removeHeaderView(View v):移除一个表头View视图。
  5. ListAdapter getAdapter():获取当前绑定的ListAdapter适配器。
  6. void setAdapter(ListAdapter adapter):设置一个ListAdapter适配器到当前ListView中。
  7. void setSelection(int posotion):设定当前选中项。
  8. long[] getCheckItemIds():获取当前选中项。

  作为一个列表选择控件,ListView具有一些选中选项可以触发的事件,但它本身没有定义这些事件,均继承自间接父类AdapterView。ListView支持的几个常用事件有以下几个:

  1. AdapterView.OnItemCLickListener:列表项被点击时触发。
  2. AdapterView.OnItemLongClickListener:列表项被长按时触发。
  3. AdapterView.OnItemSelectedListener:列表项被选择时触发。

2. ListView两种使用方式

        在Android项目中使用ListView,有两种方式,一种是通过一个继承了ListActivity的Activity,在其中设定ListAdapter,对于这种方式,比较适用于整个页面就是一个ListView;第二种方式就是直接使用ListView控件,这种方式也是项目中比较常用的方式。

        接下来就对这两种使用ListView方式进行详细讲解。首先新建一个listViewTest工程,并让Android studio帮我们自动生成主活动和布局。在activity_main.xml布局文件中添加两个按钮,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.fd.listviewtest.MainActivity">

    <Button
        android:id="@+id/btn_list_activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="使用ListActivity"
        android:textAllCaps="false" />

    <Button
        android:id="@+id/btn_list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="使用ListView"
        android:textAllCaps="false" />

</LinearLayout>

        MainActivity的java代码如下所示:

package com.fd.listviewtest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        bindView();
    }

    private void bindView() {
        findViewById(R.id.btn_list_activity).setOnClickListener(this);
        findViewById(R.id.btn_list_view).setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        Intent intent;
        switch (v.getId()){
            case R.id.btn_list_activity:
                intent = new Intent(this, UseListActivity.class);
                startActivity(intent);
                break;
            case R.id.btn_list_view:
                intent = new Intent(this, UseListViewActivity.class);
                startActivity(intent);
                break;
        }
    }
}

        布局和代码都很简单,这里就不作讲解了。

2.1 ListActivity

  ListActivity继承了Activity,并通过绑定一个ListAdapter来显示一个数据列表。需要注意的是,如果对列表项的数据格式没有特殊要求,它完全可以不使用布局文件即可创建一个ListView,因为ListActivity类本身已经包含了一个ListView。因此在onCreate()方法中,不需要调用setContentView()方法来从一个布局文件加载用户界面。

  在ListActivity的onCreate()方法中,可以直接使用this.setListAdapter()方法为这个ListView设定ListAdapter。如果想获得并操作这个ListActivity自带的ListView,可以使用this.getListView()方法获取。

        下面讲解一下使用继承ListActivity的方式来实现ListView࿰

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

streate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值