android ListView 示例3 使用 ListActivity 创建 ListView

如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity集成ListActivity来实现,ListActivity的子类无须调用setContentView方法来显示某个界面,而是可以直接传入一个内容Adapter,ListActivity的子类就呈现出一个列表。
例如,将使用示例2的例子修改一下,如下:

package com.toby.personal.testlistview;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] array1 = {"C", "C++", "Qt", "QML"};
        ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<>(this, R.layout.array_lang, array1);
        setListAdapter(arrayAdapter1);
    }
}

上面程序的Activity继承了ListActivity,ListActivity无须界面布局文件。运行效果如下:

《android ListView 示例3 使用 ListActivity 创建 ListView》 20170227215236

我们还可以在onCreate方法中使用setContentView方法设置自定义布局。但是这时需要在布局文件中指定一个id为“@+id/android:list”(如果是代码形式,则是android.R.id.list)的ListView。例如,我们自定义名为my_list_view的ListView如下:

<?xml version="1.0" encoding="utf-8"?>
<ListView android:id="@+id/android:list"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    android:layout_weight="1"
    android:drawSelectorOnTop="false"
    />

然后在onCreate方法中使用setContentView方法,设置my_list_view的自定义布局文件:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.my_list_view);

        String[] array1 = {"C", "C++", "Qt", "QML"};
        ArrayAdapter<String> arrayAdapter1 = new ArrayAdapter<>(this, R.layout.array_lang, array1);
        setListAdapter(arrayAdapter1);
    }

上述自定义的ListView的运行效果如果:

《android ListView 示例3 使用 ListActivity 创建 ListView》 20170227215601

参考文献:《疯狂Android讲义(第2版)》

    原文作者:赵者也
    原文地址: https://www.jianshu.com/p/18961592c3c4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞