08-25 convertView、ViewHolder、MyfruitPractice、divider、Header

来源:互联网 发布:南京未来造价软件 编辑:程序博客网 时间:2024/05/18 01:11

convertView、ViewHolder

//convertView为了避免重复创建id,减少了加载的时间,占用内存比较少//如果不用,每条数据都会生成一个view,使用两者,如果屏幕显示10个,生成14个左右的view,循环使用 @Override    public View getView(int position, View convertView, ViewGroup parent) {        Student student=mDate.get(position);        ViewHolder vh=null;        if(convertView==null){            vh=new ViewHolder();            convertView=mInflater.inflate(R.layout.layout_simple,null);            vh.imageView= (ImageView) convertView.findViewById(R.id.imageview_head);            vh.teview_name= (TextView) convertView.findViewById(R.id.textview_name);            vh.textview_sex= (TextView) convertView.findViewById(R.id.textview_sex);            vh.textview_age= (TextView) convertView.findViewById(R.id.textview_age);            vh.texview_hobby= (TextView) convertView.findViewById(R.id.textview_hobby);            convertView.setTag(vh);            Log.d("converView","countview为空的加载"+(count));        }else{            vh= (ViewHolder) convertView.getTag();            Log.d("converView","countview不为空的加载"+(count));        }        count++;        vh.imageView.setImageResource(student.getImp());        vh.teview_name.setText(student.getName());        vh.textview_sex.setText(student.getSex());        vh.textview_age.setText(student.getAge());        vh.texview_hobby.setText(student.getHobby());        return convertView;    }    class ViewHolder {        ImageView imageView;        TextView teview_name;        TextView textview_sex;        TextView textview_age;        TextView texview_hobby;    }}

MyfruitPractice、divider、Header

//**activity_fruit.xml**<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <ListView        android:id="@+id/lisiview_fruit"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:divider="@color/pink"        android:dividerHeight="1dp"></ListView></LinearLayout>![这里写图片描述](http://img.blog.csdn.net/20150825201018577)//**fruit.xml**   view的模板<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_vertical">    <CheckBox        android:id="@+id/checkbox_fruit"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:focusable="false"        android:text="选择水果"/>    <ImageView        android:id="@+id/imageview_fruit"        android:layout_width="100dp"        android:layout_height="100dp"        android:src="@mipmap/cherry"/>    <TextView        android:id="@+id/textview_cherry"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="樱桃"/></LinearLayout>![这里写图片描述](http://img.blog.csdn.net/20150825201224514)//**Header 全选按钮**<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <Button        android:id="@+id/button_checkAll"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="全选"/></LinearLayout>//**Foot  反选按钮**<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <Button        android:id="@+id/button_fanxuan"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="反选"/></LinearLayout>//**Fruit类**package com.example.administrator.homework.model;import android.widget.CheckBox;import android.widget.ImageView;import android.widget.TextView;/** * Created by Administrator on 2015/8/25. */public class Fruit {    private int  imageView;    private String textView;    private boolean isChecked;    public Fruit(int imageView, String textView) {        this.imageView = imageView;        this.textView = textView;    }    public int getImageView() {        return imageView;    }    public void setImageView(int imageView) {        this.imageView = imageView;    }    public String getTextView() {        return textView;    }    public void setTextView(String textView) {        this.textView = textView;    }    public boolean isChecked() {        return isChecked;    }    public void setIsChecked(boolean isChecked) {        this.isChecked = isChecked;    }}//**FruitAdapter类**package com.example.administrator.homework.adapter;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.ImageView;import android.widget.TextView;import com.example.administrator.homework.MyFruit;import com.example.administrator.homework.R;import com.example.administrator.homework.model.Fruit;import java.util.List;/** * Created by Administrator on 2015/8/25. */public class FruitAdapter extends BaseAdapter{    private List<Fruit> mFruit;    private LayoutInflater mInflater;    private boolean[] mMangerALLCheckBox;    public FruitAdapter(List<Fruit> mFruit, LayoutInflater mInflater) {        this.mFruit = mFruit;        this.mInflater = mInflater;        mMangerALLCheckBox=new boolean[mFruit.size()];    }    //全选的方法    public void checkAll(){        for(int i=0;i<mMangerALLCheckBox.length;i++){            mMangerALLCheckBox[i]=true;            notifyDataSetChanged();        }    }    //反选的方法    public void fanxuan(){        for (int i = 0; i <mMangerALLCheckBox.length ; i++) {            mMangerALLCheckBox[i]=!mMangerALLCheckBox[i];            notifyDataSetChanged();        }    }    public void itemSeleck(int posotion){        mMangerALLCheckBox[posotion]=!mMangerALLCheckBox[posotion];        notifyDataSetChanged();    }    @Override    public int getCount() {        return mFruit.size();    }    @Override    public Object getItem(int position) {        return position;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(final int position, View convertView, ViewGroup parent) {        Fruit fruit=mFruit.get(position);        ViewHolder viewHolder=null;        if(convertView==null){            viewHolder=new ViewHolder();            convertView=mInflater.inflate(R.layout.fruit,null);            viewHolder.imageView= (ImageView) convertView.findViewById(R.id.imageview_fruit);            viewHolder.textView= (TextView) convertView.findViewById(R.id.textview_cherry);            viewHolder.checkBox= (CheckBox) convertView.findViewById(R.id.checkbox_fruit);            convertView.setTag(viewHolder);        }else{            viewHolder= (ViewHolder) convertView.getTag();        }        viewHolder.imageView.setImageResource(fruit.getImageView());        viewHolder.textView.setText(fruit.getTextView());        viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                Log.d("Myfruit","选择框发生变化"+isChecked);//                mFruit.get(position).setIsChecked(isChecked);                mMangerALLCheckBox[position]=isChecked;                notifyDataSetChanged();            }        });//        viewHolder.checkBox.setChecked(fruit.isChecked());        viewHolder.checkBox.setChecked(mMangerALLCheckBox[position]);        return convertView;    }    class ViewHolder{        ImageView imageView;        TextView textView;        CheckBox checkBox;    }}//**MyFruitActivity类**package com.example.administrator.homework;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.Adapter;import android.widget.AdapterView;import android.widget.Button;import android.widget.ListView;import com.example.administrator.homework.adapter.FruitAdapter;import com.example.administrator.homework.adapter.StudentAdapter;import com.example.administrator.homework.model.Fruit;import com.example.administrator.homework.model.Student;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2015/8/25. */public class MyFruit extends Activity{    private ListView mListView;    private List<Fruit> mFruit;    private FruitAdapter mAdapter;    LayoutInflater mInflater;    private View mHeaderView;    private Button mBtnCheckAll;    private View mFootView;    private Button mBtnFan;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_myfruit);        mListView= (ListView) findViewById(R.id.lisiview_fruit);        mInflater=getLayoutInflater();        initDate();        //全选按钮        mHeaderView=mInflater.inflate(R.layout.fruit_header,null);        mBtnCheckAll= (Button) mHeaderView.findViewById(R.id.button_checkAll);        mBtnCheckAll.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mAdapter.checkAll();            }        });        mListView.addHeaderView(mHeaderView);        //反选按钮        mFootView=mInflater.inflate(R.layout.fruit_foot,null);        mBtnFan= (Button) mFootView.findViewById(R.id.button_fanxuan);        mBtnFan.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                mAdapter.fanxuan();            }        });        mListView.addFooterView(mFootView);        mAdapter=new FruitAdapter(mFruit,mInflater);        mListView.setAdapter(mAdapter);        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Log.d("MyFruit","选中的水果是:"+mFruit.get(position-1).getTextView());                mAdapter.itemSeleck(position-1);            }        });    }    private void initDate() {        mFruit = new ArrayList<>();        for (int i=0;i<5;i++){            Fruit apple = new Fruit(R.mipmap.apple,"苹果");            Fruit banana = new Fruit(R.mipmap.banana,"香蕉");            Fruit cherry = new Fruit(R.mipmap.cherry,"樱桃");            Fruit peach = new Fruit(R.mipmap.peach,"桃子");            mFruit.add(apple);            mFruit.add(banana);            mFruit.add(cherry);            mFruit.add(peach);        }    }}![这里写图片描述](http://img.blog.csdn.net/20150825202316242)
0 0
原创粉丝点击