ListView的简单优化

来源:互联网 发布:大淘营淘宝复制软件 编辑:程序博客网 时间:2024/05/19 06:34
package com.example.third_code;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;/** * @author HD * @date 2015-11-29 * @package_name com.example.third_code * @file_name MainActivity.java */public class MainActivity extends Activity {    private List<Fruit> list = new ArrayList<Fruit>();    private FruitAdapter adapter;    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listView);        initFruit();        adapter = new FruitAdapter(MainActivity.this, R.layout.fruit_layout,                R.id.textView, list);        listView.setAdapter(adapter);    }    void initFruit() {        Fruit Apple = new Fruit("Apple", R.drawable.ic_1);        Fruit Banana = new Fruit("Banana", R.drawable.ic_2);        Fruit Orange = new Fruit("Orange", R.drawable.ic_3);        Fruit Watermelon = new Fruit("Watermelon", R.drawable.ic_4);        Fruit Pear = new Fruit("Pear", R.drawable.ic_5);        Fruit Grape = new Fruit("Grape", R.drawable.ic_6);        Fruit Pineapple = new Fruit("Pineapple", R.drawable.ic_7);        Fruit Strawberry = new Fruit("Strawberry", R.drawable.ic_8);        Fruit Cherry = new Fruit("Cherry", R.drawable.ic_9);        Fruit Mango = new Fruit("Mango", R.drawable.ic_10);        Fruit pomelo = new Fruit("pomelo", R.drawable.ic_11);        Fruit starfruit = new Fruit("starfruit", R.drawable.ic_12);        Fruit muskmelon = new Fruit("muskmelon", R.drawable.ic_13);        Fruit durian = new Fruit("durian", R.drawable.ic_14);        Fruit pineapple = new Fruit("pineapple", R.drawable.ic_15);        Fruit grape = new Fruit("grape", R.drawable.ic_16);        Fruit Kiwifruit = new Fruit("Kiwifruit", R.drawable.ic_17);        Fruit MyFruit = new Fruit("Kiwifruit", R.drawable.ic_18);        list.add(Apple);        list.add(Banana);        list.add(Orange);        list.add(Watermelon);        list.add(Pear);        list.add(Grape);        list.add(Pineapple);        list.add(Strawberry);        list.add(Cherry);        list.add(Mango);        list.add(pomelo);        list.add(starfruit);        list.add(muskmelon);        list.add(durian);        list.add(pineapple);        list.add(grape);        list.add(Kiwifruit);        list.add(MyFruit);    }    public class FruitAdapter extends ArrayAdapter<Fruit> {        private int resourceId;        public FruitAdapter(Context context, int resource,                int textViewResourceId, List<Fruit> objects) {            super(context, resource, textViewResourceId, objects);            this.resourceId = resource;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO 自动生成的方法存根            //获得list中指定位置fruit的实例            Fruit fruit = getItem(position);            //covertView是已加载的布局            if (convertView == null) {                view = LayoutInflater.from(getContext()).inflate(resourceId,                        null);                holder.imageview = (ImageView) view                        .findViewById(R.id.imageView);                //把携带有对应这个view里面的控件的对象保存在view的标签中                view.setTag(holder);                Log.i("hhhd", "convertView is not used");            } else {                view = convertView;                //当这次需要加载这个布局时候,取出标签                holder = (ViewHolder) view.getTag();                Log.i("hhhd", "convertView is used");            }            holder.imageview.setImageResource(fruit.getImageResouceId());            holder.textView.setText(fruit.getName());            return view;        }//一个用来保存在布局中控件的辅助类        class ViewHolder {            ImageView imageview;            TextView textView;        }    }}
package com.example.third_code;/** * @author HD * @date 2015-11-29 * @package_name com.example.third_code * @file_name Fruit.java */public class Fruit {    private String name;    private int imageResouceId;    public Fruit(String name, int imageResouceId) {        // TODO 自动生成的构造函数存根        this.name = name;        this.imageResouceId = imageResouceId;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getImageResouceId() {        return imageResouceId;    }    public void setImageResouceId(int imageResouceId) {        this.imageResouceId = imageResouceId;    }}

layout_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.third_code.MainActivity" >    <ListView        android:id="@+id/listView"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </ListView></RelativeLayout>

fruit_layout.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" >    <ImageView         android:id="@+id/imageView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>    <TextView         android:id="@+id/textView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center"/></LinearLayout>
0 0
原创粉丝点击