Android:最常用和最难用的控件----ListView

来源:互联网 发布:python 下载全站资源 编辑:程序博客网 时间:2024/05/14 17:48

ListView 绝对可以称得上是Android中最常用的控件之一了 几乎所有的应用程序都会用到它 由于手机屏幕的空间比价有限 能够一次性在屏幕上显示的内容不多,当我们的程序中有大量数据需要展示的时候 就可以借助ListView来实现 ,ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内 同时屏幕上原有的数据则会滚动处屏幕,例如我们每天使用的QQ 查看聊天记录,翻阅微博信息等。

我们通过一个案例来实现定制ListView 界面 这是案例的最终显示效果
这里写图片描述

首先准备好这些图片 放入 res下的drawable文件夹中

然后定义一个实体类 作为ListView 的适配器的适配类型 新建类Fruit ,Fruit类中的两个字段 name表示水果名字 imageId 表示水果对应图片的资源id

public class Fruit {    private  String name;    private  int   imageId;    public Fruit(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目录习下新建 fruit_item.xml 代码如下
在这个布局中我们定义了一个ImageView用于显示水果的图片 又定义了一个TextView 用于显示水果的名称 并让TextView 在垂直方向上显示居中

<?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="wrap_content">    <ImageView        android:id="@+id/fruit_image"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/fruit_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:layout_marginLeft="10dp"        /></LinearLayout>

接下来需要创建一个自定义的适配器这个适配器继承自ArrayAdapter 并将泛型指定为Fruit 类 新建类 FruitAdapter 代码如下

package com.example.administrator.databasetest;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by Administrator on 2017/4/13. */public class FruitAdapter extends ArrayAdapter<Fruit> {    private  int resourceId;    public FruitAdapter(Context context, int textViewResourceId, List<Fruit> objects) {        super(context, textViewResourceId, objects);        resourceId = textViewResourceId;    }        public View getView(int position,View convertView, ViewGroup parent){             Fruit fruit =getItem(position);//获取当前项的Fruit 实例             View  view= LayoutInflater.from(getContext()).inflate(resourceId,parent,false);            ImageView fruitImage=(ImageView)view.findViewById(R.id.fruit_image);            TextView fruitName=(TextView)view.findViewById(R.id.fruit_name);            fruitImage.setImageResource(fruit.getImageId());            fruitName.setText(fruit.getName());            return  view;    }}

这里写图片描述

下面修改MainActivety中的代码

package com.example.administrator.databasetest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {      private List<Fruit> fruitList=new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initFruits();//初始化水果数据        FruitAdapter adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);        ListView listView = (ListView) findViewById(R.id.list_view);        listView.setAdapter(adapter);    }    public  void initFruits(){        for (int i=0;i<2;i++)        {            Fruit apple=new Fruit("Apple",R.drawable.apple_pic);            fruitList.add(apple);            Fruit banana=new Fruit("Banana",R.drawable.banana_pic);            fruitList.add(banana);            Fruit orange=new Fruit("Orange",R.drawable.orange_pic);            fruitList.add(orange);            Fruit watermelon=new Fruit("Watermelon",R.drawable.watermelon_pic);            fruitList.add(watermelon);            Fruit pear=new Fruit("Pear",R.drawable.grape_pic);            fruitList.add(pear);            Fruit grape=new Fruit("Grape",R.drawable.grape_pic);            fruitList.add(grape);            Fruit pineapple=new Fruit("Pineapple",R.drawable.pineapple_pic);            fruitList.add(pineapple);        }    }}

这里写图片描述

0 0
原创粉丝点击