08-25 convertView、ViewHolder、MyfruitPractice、divider、Header
2015-08-27 18:50
393 查看
convertView、ViewHolder
MyfruitPractice、divider、Header
//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)
相关文章推荐
- JSF 2 hidden value example
- UIImageView添加圆角图片
- Ngui如何弹出提示消息,并淡出【支持多条】
- 8.8.1 Optimizing Queries with EXPLAIN
- amaze UI animation动画示例
- ValueError: setting an array element with a sequence.
- ValueError: setting an array element with a sequence.
- 如何访问UITextField内的值
- pcDUino 卡刷实现
- HBuilder快捷键
- 【UISlider滑动控件】
- UISearchBar修改输入框,取消按钮样式
- WM_QUIT,WM_CLOSE,WM_DESTROY
- 理解 Android Build 系统
- 截屏实现,将UIView指定区域转换成图UIImage
- Hadoop 管理工具HUE配置-Hive配置
- Query String模块处理URL中的查询字符串
- 深入学习NSOperationQueue
- 对比MIUI7和Flyme4.5 期待神秘的Flyme5
- quick-3.5 ActionTimeline的setLastFrameCallFunc调用会崩溃问题