熟悉安卓开发的朋友,应该都知道,ListView的使用频率在开发中时非常高的,很多应用程序都会用到它。它大概是做什么的?举个例子,我们手机的屏幕空间都是有限的,要想一次性在屏幕上显示所有内容时不可能的。当我们的应用程序中,有大量的数据需要展示的时候,就可以用到ListView来实现了。ListView可以让我们通过手指上下滑动手机屏幕,将屏幕外的数据滚动到屏幕内,让我们看见,同时屏幕上原有的内容则会滚动到屏幕外。其实我们每天几乎都在使用这个控件,比如查看微信QQ的聊天页面,翻阅新闻等等。
现在知道ListView大概是干什么的后,我们来详细的讲解一下它的用法!
首先,创建一个项目ListView3,一切都让android studio帮我们创建好,然后编写activity_main.xml,代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/list_view3"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
布局很简单,首先指定ListView的id,然后设置宽高均为match_parent,这样,ListView就沾满了整个布局的空间
接下来我们编写MainActivity中的代码,如下所示:
package com.example.listview3;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.lang.reflect.Array;
public class MainActivity extends AppCompatActivity {
//作为测试数据,将以下数据传递给ListView
private String[] data = {"Curry","Durant","Thompson","Green","Igudala","Liviston","West",
"Clark","Mikao","Meggea","Barnes","Curry","Durant","Thompson","Green","Igudala",
"Liviston","West","Clark","Mikao","Meggea","Barnes"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//ArrayAdapter适配器,将上面的测试数据,适配到ListView
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
MainActivity.this, android.R.layout.simple_list_item_1, data
);
ListView listView = (ListView) findViewById(R.id.list_view3);
listView.setAdapter(adapter);
}
}
我们知道,ListView空间是用于展示大量数据的控件,在这里,我定义了一组String字符串类型的数据data,里面包含的是NBA球员的名字
但是,数组中的数据是无法直接传递给ListView控件的,这里我们用到了适配器,我选择的是ArrayAdapter。它可以通过泛型来指定要适配的数据类型,
然后在构造函数中把要适配的数据传入。由于我提供的是字符串数据,所以这里将ArrayAdapter的泛型指定为String,然后在ArrayAdapter的构造函数中,依次传入上下文以及要适配的数据。
MainActivity.this代表了这个主页面,android.R.layout.simple_list_item_1代表了ListView子项布局的id,这是一个android内置的布局文件,里面有一个TextView,用于显示数据文本。
然后我们通过findViewById获取ListView的实例,最后调用ListView的setAdapter()方法,将构造好的适配器传递进去,这样ListView和数据之间的关联就建立好了
现在运行一下程序,结果如下:
可以看到,现在我们所提供的数据,已经在ListView控件显示了,此时,我们上下滑动屏幕,就可以看到屏幕外的内容滚动到了屏幕内,而原来屏幕内的内容则滚动到了屏幕外,这就是ListView控件的效果。