Android ListActivity使用

在使用ListView控件显示数据时,有两种实现方式:

  1. 在xml文件中定义listview控件,设置相关属性,然后再Activity当中对其进行配置和事件监听
  2. 让你的Activity继承ListActivity,通过getListView()来获取,这时可以不写ListView的xml文件。

我们在ListView中显示的数据都是通过ListAdapter这个接口配置的,通常是使用它的某个子类适配器进行数据适配,其中用的最多的就是ArrayAdapter(存储数组)、SimpleAdapter(字符串)、CursorAdapter(数据库中的数据)。

我们可以使用默认的full-screen list,但很多时候我们需要做一些扩充。这时我们就需要定制layout,比如加上一个Button,这时我们就需要将ListView的id设置为”@android:id/list”。因为我们继承ListActivity这个类时,通过getListView()获取ListView对象。而系统在执行此方法时是按照id=list去找的,所以id必须定义为”@android:id/list”。
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout android:layout_height="wrap_content"
        android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
            android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin"
        android:src="@android:drawable/ic_dialog_email" />

</android.support.design.widget.CoordinatorLayout>

content_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"
    xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:drawSelectorOnTop="false"
        ></ListView>
</LinearLayout>

ListActivity.java

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

/**
 * Created by Administrator on 2015/10/15.
 */
public class ListActivity extends android.app.ListActivity implements AdapterView.OnItemClickListener{

    String items[] = {"One","Two","Three","Four","Five"};
    private Button button;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
        ListView listView = getListView();
        listView.setOnItemClickListener(this);
        listView.setTextFilterEnabled(true);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(ListActivity.this,items[i],Toast.LENGTH_SHORT).show();
    }
}

这里写图片描述

或者当我们只想单纯的显示List,而不需要添加更多的控件时就不需要在代码中setContentView()。

通过在string.xml中配置多个国家的名字

<resources>
    <string name="app_name">ListActivity</string>
    <string name="action_settings">Settings</string>

    <string-array name="countries_array">
        <item>Bahrain</item>
        <item>Bangladesh</item>
        <item>Barbados</item>
        <item>Belarus</item>
        <item>Belgium</item>
        <item>Belize</item>
        <item>Benin</item>
        <item>Bermuda</item>
        <item>Bhutan</item>
        <item>Bolivia</item>
        <item>Bosnia and Herzegovina</item>
        <item>Botswana</item>
        <item>Bouvet Island</item>
        <item>Brazil</item>
    </string-array>
</resources>

ListActivity.java

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

/**
 * Created by Administrator on 2015/10/15.
 */
public class ListActivity extends android.app.ListActivity implements AdapterView.OnItemClickListener{

    String[] countries;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        /*
        setContentView(R.layout.activity_main);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
        ListView listView = getListView();
        listView.setOnItemClickListener(this);
        listView.setTextFilterEnabled(true);
        */
        countries = getResources().getStringArray(R.array.countries_array);
        setListAdapter(new ArrayAdapter<String>(ListActivity.this,R.layout.list_item,countries));
        ListView listView = getListView();
        listView.setOnItemClickListener(this);
        listView.setTextFilterEnabled(true);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(ListActivity.this,countries[i],Toast.LENGTH_SHORT).show();
    }
}

子项布局文件
list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    android:textSize="16sp"
    xmlns:android="http://schemas.android.com/apk/res/android" />

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值