Android-ListView-ArrayAdapter

我在上一篇博客中Android-动态添加控件到ScrollView,写到可以用Java动态添加控件到Scrollview的孩子LinearLayout里面去,这种方式是不合理的,因为这种方式是一次性把数据全部加载完成了

在Android中就提供了专门列表显示条目的控件,ListView控件,ListView控件不是一次性加载全部数据,他是只加载用户在屏幕看得到的数据,当用户滑动的过程中在去加载新的数据,同时会自动销毁之前加载过的数据

什么时候使用ListView ?

答:当很多条目Item,显示都内容不同,数据不同,但是存放的位置是相似的,并且动态变化的条目Item(和数据),就可以用ListView

ListView的使用:

1.在布局中定义ListVIew

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 定义ListView -->
    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</RelativeLayout>

2.在Java代码中找到ListVIew,再设置适配器 setAdapter(ListAdapter的子类)


ArrayAdapter适配器是数组适配器,只能去适配展示很简单的格局,只能展示条目Item的一个控件

ListAdapter是ArrayAdapter的父类:

使用ArrayAdapter适配器:有四个参数:

                  第一个参数:上下文

                  第二个参数:Item条目用到的布局文件

                  第三个参数:Item条目用到的布局文件里面控件的ID

                  第四个参数:数据

 ListVIew + ArrayAdapter:

这里的第二个参数和第三个参数是使用了系统的 布局文件+布局文件里面的控件ID

package liudeli.ui.all;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.List;

public class ListViewActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listview);

        ListView listView = findViewById(R.id.listview);

        // 组装数据
        List<String> list = new ArrayList<>();
        for (int i=0; i< 60; i++) {
            list.add("我是ListView的Item条目 下标:" + i);
        }

        // 使用ArrayAdapter适配器
        ListAdapter listAdapter = new ArrayAdapter<String>(this,
                                                android.R.layout.simple_list_item_1,
                                                android.R.id.text1,
                                                list);
        // 把适配器给ListView
        listView.setAdapter(listAdapter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

展示:

原文地址:https://www.cnblogs.com/android-deli/p/10096334.html