android ViewHolder简洁写法 实用
来源:互联网 发布:我的祖国钢琴谱 淘宝 编辑:程序博客网 时间:2024/05/18 00:44
- ViewHolder holder = null;
- if(convertView == null){
- convertView = mInflater.inflate(R.layout.xxx null);
- holder = new ViewHolder();
- holder.tvXXX = (TextView)findViewById(R.id.xxx);
- //...一连串的findViewById
- }
- else{
- holder = (ViewHolder) convertView.getTag();
- }
- private static class ViewHolder{
- TextView tvXXX;
- //很多view的定义
- }
ViewHolder这么写(只提供一个静态方法,其实可以加一个私有构造函数防止外部实例化),代码很简单,看过就明白了
- public class ViewHolder {
- // I added a generic return type to reduce the casting noise in client code
- @SuppressWarnings("unchecked")
- public static <T extends View> T get(View view, int id) {
- SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
- if (viewHolder == null) {
- viewHolder = new SparseArray<View>();
- view.setTag(viewHolder);
- }
- View childView = viewHolder.get(id);
- if (childView == null) {
- childView = view.findViewById(id);
- viewHolder.put(id, childView);
- }
- return (T) childView;
- }
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(context)
- .inflate(R.layout.banana_phone, parent, false);
- }
- ImageView bananaView = ViewHolder.get(convertView, R.id.banana);
- TextView phoneView = ViewHolder.get(convertView, R.id.phone);
- BananaPhone bananaPhone = getItem(position);
- phoneView.setText(bananaPhone.getPhone());
- bananaView.setImageResource(bananaPhone.getBanana());
- return convertView;
- }
值得注意的是SparseArray这个知识点,优化过的存储integer和object键值对的hashmap,网上资料很多这里就不废话了~
来自:http://www.eoeandroid.com/thread-321547-1-1.html
1 0
- android ViewHolder简洁写法 实用
- android ViewHolder模式超简洁写法
- Android ViewHolder模式超简洁写法
- android ViewHolder模式超简洁写法
- Android——ViewHolder简洁写法
- android ViewHolder模式超简洁写法
- android ViewHolder模式超简洁写法
- ViewHolder的 简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- ViewHolder简洁写法
- ViewHolder的简洁写法
- ViewHolder的简洁写法
- viewHolder模式简洁写法
- Android中ViewHolder模式超简洁写法(一劳永逸)
- android ListView优化之ViewHolder的超简洁写法
- Android ViewHolder通用写法(简洁、减少代码量)
- EDIUS 8中图片可见度该怎么进行调整
- Nginx 配置从零开始
- 使用CStdioFile读写文件
- FAQ14847]L版本全屏显示来电界面
- Notification不同api下的区别
- android ViewHolder简洁写法 实用
- hdoj 1087Super Jumping! Jumping! Jumping!《《dp》》
- HTMLTestRunner 异常输出中文乱码
- 欢迎使用CSDN-markdown编辑器
- 用MXnet入门实战深度学习之一:安装GPU版mxnet并跑一个MNIST手写数字识别
- SPA 单页Web应用
- leetcode 91. Decode Ways
- 2种方式实时滑动的ViewPager
- angular-phonecat引导程序注意事项