Android学习笔记:ListView

代码地址:https://github.com/ambition-hb/ListViewDemo

ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕内的数据则会滚动出屏幕。


一、基本用法

(1)由于数组中的数据无法直接传递给ListView,我们需要借助适配器(Adapter)来完成。
(2)ArrayAdapter可以通过泛型来指定要适配的数据,然后在构造函数中把要适配的数据传入。
(3)android.R.layout.simple_list_item_1是ListView内置的一个子项布局,里面只有一个TextView,可显示一段文本
MainActivity中的代码如下:

public class MainActivity extends AppCompatActivity {
   

    private String[] data = {
   "Sunny","Cloudy","Few Clouds","Partly Cloudy","Overcast","Windy","Calm","Light Breeze",
            "Moderate","Fresh Breeze","Strong Breeze","High Wind","Gale","Strong Gale","Storm","Violent Storm","Hurricane",
            "Tornado","Tropical Storm","Shower Rain","Heavy Shower Rain","Thundershower","Heavy Thunderstorm","Thundershower with hail",
            "Light Rain","Moderate Rain","Heavy Rain","Extreme Rain","Drizzle Rain","Storm","Heavy Storm","Severe Storm","Freezing Rain",
            "Light to moderate rain","Moderate to heavy rain","Heavy rain to storm","Storm to heavy storm","Heavy to severe storm",
            "Rain","Light Snow","Moderate Snow","Heavy Snow","Snowstorm","Sleet","Rain And Snow","Shower Snow","Snow Flurry",
            "Light to moderate snow","Moderate to heavy snow","Heavy snow to snowstorm","Snow","Mist","Foggy","Haze","Sand","Dust",
            "Duststorm","Sandstorm","Dense fog","Strong fog","Moderate haze","Heavy haze","Severe haze","Heavy fog","Extra heavy fog",
            "Hot","Cold","Unknown"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //通过泛型来指定要适配的数据类型,然后在构造函数中把适配的数据传入。
        //android.R.layout.simple_list_item_1是ListView内置的一个子项布局,里面只有一个TextView,可显示一段文本
        //data表示要适配的数据
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
        ListView listView = (ListView)findViewById(R.id.list_view);
        //将构建好的适配器对象传进去
        listView.setAdapter(adapter);
    }
}

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_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

App截图如下:
在这里插入图片描述
需要补充的是:
(1)simple_list_item_1(单行显示),此布局中只有一个TextView,是Android内置的布局文件,id为:android.R.id.text1;
(2)simple_list_item_2和two_line_list_item(双行显示),都有两个TextView:android.R.id.text1和android.R.id.text2,不同之处在于,前者两行字是不一样大的,而后者两行字一样大小。


二、自定义界面

由于只显示一段文本的ListView太过于单调,我们对其界面进行自定义。
首先,定义一个实体类,作为ListView的适配器类型,包含一组天气及其对应的名称。

public class Weather {
   
    private String name;
    private int imageId;

    public Weather(String name, int imageId) {
   
        this.name = name;
        this.imageId = imageId;
    }

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public int getImageId() {
   
        return imageId;
    }

    public void setImageId(int imageId) {
   
        this.imageId = imageId;
    }
}

其次,为ListView的子项指定一个我们自定义的布局,在layout目录下新建weather_item.xml。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/weather_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/i_999_unknown"/>
    
    <TextView
        android:id="@+i
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值