BaseAdapter2.0 -----ViewHolder
2015-10-21 19:45
369 查看
[code]package com.example.helloworld; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class MainAdapter extends BaseAdapter{ private List<MainItem> mList; private LayoutInflater inflater; public MainAdapter(Context context,List<MainItem> list){ mList = list; inflater = LayoutInflater.from(context); } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder viewHolder; MainItem item = mList.get(position); //当convertView为空时,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。 if (convertView == null) { view = inflater.inflate(R.layout.main_item, null); viewHolder = new ViewHolder(); viewHolder.imageView = (ImageView) view.findViewById(R.id.imgView); viewHolder.textView = (TextView) view.findViewById(R.id.tvName); view.setTag(viewHolder); }else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } viewHolder.imageView.setImageResource(item.getImagView()); viewHolder.textView.setText(item.getTvName()); return view; } //内部类ViewHolder,用于对控件的实例进行缓存。 class ViewHolder{ ImageView imageView; TextView textView; } }
[code]package com.example.helloworld; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.ListView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; public class MainActivity extends Activity { private PullToRefreshListView lV; private List<MainItem> mListItems; private MainAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListItems = new ArrayList<MainItem>(); mListItems.add(new MainItem(R.drawable.ic_launcher, "hongyewell")); lV = (PullToRefreshListView) findViewById(R.id.mylv); adapter = new MainAdapter(MainActivity.this, mListItems); lV.setAdapter(adapter); lV.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... arg0) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } protected void onPostExecute(Void result) { MainItem mainItem = new MainItem(R.drawable.ic_launcher, "geek_ymv"); mListItems.add(0,mainItem); adapter.notifyDataSetChanged(); lV.onRefreshComplete(); }; }.execute(); } }); } }
下拉刷新后
相关文章推荐
- Java中一些常用的排序程序代码
- BeanNameAware接口和BeanFactoryAware接口
- [OpenCV](1)安装与测试
- 从C#中的引用类型到String
- 黑马程序员——基础知识-反射机制
- 自定义TextView的TextSize属性getDimension和setTextSize的冲突
- 错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 程序员,你敢休息一下吗?——真爱生命,远离编程
- [POJ2348]Euclid's Game
- swift-导航栏添加自定义返回按钮
- Qt 的线程与事件循环
- Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)
- IOS开发:XMPP聊天工具的使用
- 确定当前记录和下一条记录之间相差的天数
- vim查看函数列表
- Java程序员从笨鸟到菜鸟之(一)开发环境搭建,基本语法,字符串,数组
- 手势识别数据库ChaLearn Gesture Challenge_1:CGD数据库简单介绍
- 学习Mongodb(一)
- Android静态代码检查-Lint
- C语言:编写折半查找函数