您的位置:首页 > 其它

listview的优化

2015-07-04 17:56 204 查看
布局



<LinearLayout

    android:layout_width="match_parent"

    android:layout_height="match_parent"

     xmlns:android="http://schemas.android.com/apk/res/android">

    <ListView

        android:id="@+id/list_view"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        >

        

    </ListView>

</LinearLayout>

列表项

<?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"

    android:orientation="vertical" >

    <ImageView android:id="@+id/fruit_image"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

    

<TextView android:id="@+id/fruit_name"

    android:layout_gravity="center"

android:layout_marginLeft="10dip"

    android:layout_height="wrap_content"

    android:layout_width="wrap_content"/>

</LinearLayout>

实体类

package com.example.listviewtest;

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 int getImageId(){

    return imageId;

            }

}

适配器类

package com.example.listviewtest;

import java.util.List;

import android.R.layout;

import android.content.Context;

import android.content.res.Resources;

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.TextView;

public class FruitAdapter extends ArrayAdapter<Fruit> {

private int resourcesId;

public FruitAdapter(Context context,int textViewResourcesId,List<Fruit> object) {

    super(context, textViewResourcesId, object);

    resourcesId=textViewResourcesId;

}

@Override

    public View getView(int position, View convertView, ViewGroup parent) {

        Fruit fruit=getItem(position);

        View view;

        ViewHolder viewHolder;

        if(convertView==null){

         view = LayoutInflater.from(getContext()).inflate(resourcesId, null);

        

         viewHolder = new ViewHolder();

         viewHolder.fruitImage=(ImageView)view.findViewById(R.id.fruit_image);

         viewHolder.fruitName=(TextView)view.findViewById(R.id.fruit_name);

         view.setTag(viewHolder);

}else{

        view = convertView;

}//if else在这里就结束了

        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());

        viewHolder = (ViewHolder) view.getTag();

        viewHolder.fruitImage.setImageResource(fruit.getImageId());

        viewHolder.fruitName.setText(fruit.getName());

        return view;//返回的view如果有问题可能导致出现空白表格一样的图像

        

    }

class ViewHolder{

    ImageView fruitImage;

    TextView fruitName;

}

}

主活动代码

package com.example.listviewtest;

import java.util.ArrayList;

import java.util.List;

import android.R.string;

import android.support.v7.app.ActionBarActivity;

import android.support.v7.app.ActionBar;

import android.support.v4.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.ViewGroup;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

import android.widget.Toast;

import android.os.Build;

public class MainActivity extends ActionBarActivity {

private List<Fruit> fruitList = new ArrayList<Fruit>();

    @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);

        listView.setOnItemClickListener(new OnItemClickListener() {//注册个itemclicklistener

            @Override

            public void onItemClick(AdapterView<?> parent, View view, int position,

                    long id) {//下面要用到position这个参数,实际就是数组下标

                    Fruit fruit = fruitList.get(position);

                    Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_LONG).show();

            }

        });

    }

    private void initFruits() {

        Fruit apple =new Fruit("Apple", R.drawable.apple);

        fruitList.add(apple);

        Fruit banana = new Fruit("Banana", R.drawable.banana);

        fruitList.add(banana);

        Fruit orange = new Fruit("Orange", R.drawable.orange);

        fruitList.add(orange);

        Fruit watermelon = new Fruit("WaterMelon", R.drawable.melong);

        fruitList.add(watermelon);

        Fruit pear = new Fruit("Pear", R.drawable.pear);

        fruitList.add(pear);

        Fruit grape = new Fruit("Grape", R.drawable.grape);

        fruitList.add(grape);

        Fruit pineapple = new Fruit("PineApple", R.drawable.pineapple);

        fruitList.add(pineapple);

        Fruit strawberry = new Fruit("StrawBerry", R.drawable.strawberry);

        fruitList.add(strawberry);

        Fruit cherry = new Fruit("Cherry", R.drawable.pear);

        fruitList.add(cherry);

        Fruit mango = new Fruit("Mango", R.drawable.pineapple);

        

        

    }

    

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: