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
- 08-25 convertView、ViewHolder、MyfruitPractice、divider、Header
- 08-25 convertView、ViewHolder、MyfruitPractice、divider、Header
- convertview与viewholder
- convertView和viewholder
- ListView的优化:convertView + viewHolder
- Listview优化之convertView,viewHolder
- ListView中ConvertView和ViewHolder
- convertView与ViewHolder的关系
- 探秘ListView的ConvertView以及ViewHolder原理
- getview里的convertview和viewholder
- ListView为什么要使用convertView和ViewHolder
- ListView性能优化之convertView和ViewHolder
- ListView中convertview和ViewHolder的区别
- 浅谈ListView之convertView和viewHolder
- ListView的性能优化-convertView和viewHolder
- ListView性能优化——convertView&viewHolder
- ConvertView和ViewHolder的个人理解
- ListView的adapter(用到ViewHolder和convertview)
- jsp中获取url里中文参数,显示乱码的解决方案
- 黑马程序员-C-for语句
- 解题报告海边
- 虚函数表位置思考
- Android-从图库中加载图片到屏幕并在上面画图
- 08-25 convertView、ViewHolder、MyfruitPractice、divider、Header
- 游戏月流水过亿的原因,浅谈<神魔之塔>
- web前端html+css常用布局02
- AJAX POST&跨域 解决方案 - CORS
- .net反射之使用反射技术为控件赋值
- 黑马程序员-C-二维数组&指针数组&二维数组指针
- acl 备忘
- 单源最短路径算法的MapReduce实现(Metis版本)
- uva103Stacking Boxes——dp