7.22
来源:互联网 发布:mac onedrive 打不开 编辑:程序博客网 时间:2024/06/06 16:27
<pre name="code" class="java">public class ListViewAdapter extends BaseAdapter{Context mContext = ViewSavedCity.instance;//Context mContext = ViewSavedCity.this;private LayoutInflater inflater = (LayoutInflater) mContext.getSystemService("layout_inflater");@Overridepublic int getCount()//控制该Adapter将会包含多少个列表项{return ((ViewSavedCity)mContext).list.size();}@Overridepublic Object getItem(int position) { //返回值决定第position处的列表项的内容return ((ViewSavedCity)mContext).list.get(position);}@Overridepublic long getItemId(int position) {//返回值决定第position处的列表项的内容return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view;ViewHolder holder = null;if (convertView == null) {//setContentView()一旦调用, layout就会立刻显示UI;//而inflate只会把Layout形成一个以view类实现成的对象,//有需要时再用setContentView(view)显示出来。//一般在activity中通过setContentView()将界面显示出来,//但是如果在非activity中如何对控件布局设置操作了,//这就需要LayoutInflater动态加载。convertView = inflater.inflate(R.layout.listview, parent, false);view = convertView;holder = new ViewHolder(); //findViewById 这个方法只有 activity和view才有。 自定义adapter并没有这个方法吧。 //并且convertView.findViewById 还涉及到了listview的优化问题 holder.cityName = (TextView)view.findViewById(R.id.cityName); holder.date = (TextView)view.findViewById(R.id.date); holder.temp = (TextView)view.findViewById(R.id.temp); holder.weather = (TextView)view.findViewById(R.id.weather); holder.index = (TextView)view.findViewById(R.id.index); view.setTag(holder);//将holder 添加到动态生成的View里面 //控件声明都封装在holder里,执行Click事件要写holder.button.onClickListener... // findViewById()默认是访问setContentView(R.layout.xxxx);这个布局,如果是获取 //一项item里的控件就要先找到item所在的布局layout文件获得一个view对象 //然后用view.findViewById()} else {holder=(ViewHolder) convertView.getTag(); } holder.cityName.setText(String.valueOf(((ViewSavedCity)mContext).list.get(position).get("cityName"))); holder.temp.setText(String.valueOf(((ViewSavedCity)mContext).list.get(position).get("temp"))); holder.weather.setText(String.valueOf(((ViewSavedCity)mContext).list.get(position).get("weather"))); holder.index.setText(String.valueOf(((ViewSavedCity)mContext).list.get(position).get("index"))); holder.date.setText(String.valueOf(((ViewSavedCity)mContext).list.get(position).get("date_y"))); //view.setTag(holder);//将holder 添加到动态生成的View里面setBackground(position,convertView); // 为ListView设置隔行不同的背景颜色 // 返回的convertView对象将作为ListView的列表项 return convertView;}private class ViewHolder { TextView cityName; TextView temp;TextView weather;TextView date;TextView index;}
考核第一轮过后代码任务可能不会特别重了,剩下该做的是完成翻页功能,按钮美化,重复按一个button的bug这几件事了,翻页功能刚刚终于测试成功了第二轮是面试加笔试,既要考java基础又要考android的知识。其实我越来越觉得除了研发其他工作室的招新好水..至于为什么水就不说了,有目共睹就好了。。
今晚收到外婆心脏问题住院了,还因为心跳突然从40/min加速到140/min而被医院下了病危通知书,心情很复杂,很难过。外婆从小就对我们几个孩子不错,好的坏的我们小孩自己能分清楚,至少对我们,她是无私的。奶奶也因为胆结石住院了。这个暑假是我除了初三的暑假去北京度假的第二个没在家的暑假,没想到会有这么多事。听到这些事,我第一反应当然是我要回家。但是,我面对着考核,我真的不能放弃幸好他们都还没什么事,幸好爸妈他们很体谅我没要我赶回去让我留在学校完成好考核。么么哒,八月份再回家吧。
今天我想写一写关于listview的接口继承类baseadapter的重写,有时候我想偷懒不写,虽然我现在掌握了,但是我还是很怕我又忘了,所以还是写一写吧
扩展BaseAdapter有很多的好处,如扩展BaseAdapter可以取得对Adapter最大的控制权:陈谷要创建多少个列表项,每个列表项的组件都由开发者也就是你自己来决定,而且在listview的接口上,扩展BaseAdapter有个很大的优势,那就是高效率!
扩展BaseAdapter主要需要重写如下四个方法
1.getCount():这个方法的返回值控制该Adapter将会包含多少个列表项
· 2.getItem(int position):该方法的返回值决定第position处的列表项的内容
3.getItemId(int positon):该方法的返回值决定第position处的列表项的ID
4.getView(int position,VIew convertView,ViewGroup parent):该方法的返回值决定第position处的列表项组件
下面我就将我天气预报查看保存城市的BaseAdapter重写的demo贴上来讲一讲怎么高效率了
ListView优化:通过convertView+ViewHolder来实现,ViewHolder就是一个静态类,使用 ViewHolder 的关键好处是缓存了显示数据的视图(View),加快了 UI 的响应速度。
当我们判断 convertView == null 的时候,如果为空,就会根据设计好的List的Item布局(XML),来为convertView赋值,并生成一个viewHolder来绑定converView里面的各个View控件(XML布局里面的那些控件)。再用convertView的setTag将viewHolder设置到Tag中,以便系统第二次绘制ListView时从Tag中取出。(看下面代码中)
如果convertView不为空的时候,就会直接用convertView的getTag(),来获得一个ViewHolder。
也就是说如果一个手机屏幕能显示多少项的item就产生多少个view,重复利用看不到的view 而不是再生成一个view,这如果在大量的数据中处理的话,是有很大优势的!
睡啦。。本来打算早点睡的。。码农的蛋疼 晚安
- 7.22
- 7.22
- 7.22
- 7.22
- 7.22
- 练习7.22
- 7.22日志
- 7.22会议记录
- 家教日记---7.22
- 7.22 生活无趣
- 7.22 OC相关
- 建议7.22 - 建议7.23
- 7.22基础控件
- 工作日志 7.22
- 7.22牛客网总结
- 星期总结7.18-7.22
- <7.22>Android开发 补充知识点
- java面试题(7.22)
- XMPP参考
- 黑马程序员_多线程
- Android app 天气预报简介及要求功能实现
- 2014年辛星jquery解读第一节
- 我对博客的一点看法
- 7.22
- VirtualBox 扩展虚拟硬盘
- 天气预报主界面--main_interaface.xml
- 天气预报功能--查询广州天气的实现
- 2014年辛星jquery解读第二节
- 接口隔离原则
- 男孩卡在车窗上离奇身亡 停放不当车主要赔14万
- 2014年辛星jquery解读第三节 Ajax
- LeetCode 80. Remove Duplicates from Sorted Array II