ViewHolder模式
来源:互联网 发布:python开发的网站源码 编辑:程序博客网 时间:2024/06/03 18:53
1、ViewHolder模式,常常用在ListView与Adapter结合时,放在getView方法里,写一个静态内部类,有实例变量。相当于用该对象作为一个容器,持有View,免得还要用容器类
还是挺方便的……
下面是代码片段,例子很简单,就是ListView与自定义的Adapter结合。
package com.wangyuanwai.listviewdemo.activity;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import com.wp.listviewdemo.R;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * Created by cadi on 2016/6/21. */public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private ListView mLv; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLv = (ListView) findViewById(R.id.main_lv); String[] temp = new String[30]; for(int i = 0; i < temp.length; i++) { temp[i] = "第" + i + "行"; } mLv.setAdapter(new MyAdapter(temp)); } private class MyAdapter extends BaseAdapter { private List<String> list = new ArrayList<String>(); private LayoutInflater mInflater; public MyAdapter(String[] strs) { super(); Log.d(TAG, "public MyAdapter(String[] strs)"); list = Arrays.asList(strs); mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { Log.d(TAG, "public int getCount()"); return list.size(); } @Override public Object getItem(int i) { Log.d(TAG, "public Object getItem(int i)"); return list.get(i); } @Override public long getItemId(int i) { Log.d(TAG, "public long getItemId(int i)"); return i; } @Override public View getView(int position, View view, ViewGroup viewGroup) { Log.d(TAG, "View getView(int position, View view, ViewGroup viewGroup)"); Log.d(TAG, "position = " + position); Log.d(TAG, "view = " + view); Log.d(TAG, "viewGroup = " + viewGroup); ViewHolder holder = null; if (view == null) { view = mInflater.inflate(R.layout.layout_lv_item, null); holder = new ViewHolder(); holder.textView = (TextView)view.findViewById(R.id.layout_show); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } holder.textView.setText(list.get(position)); Log.d(TAG, "holder = " + holder); Log.d(TAG, "*********************执行结束************************" + (++count)); return view; } } private static class ViewHolder { public TextView textView; }}
0 0
- ViewHolder模式
- ViewHolder模式
- Android ViewHolder模式
- Android的viewHolder模式
- viewHolder模式简洁写法
- Android的viewHolder模式
- ViewHolder模式超简洁写法
- ViewHolder模式的简洁写法
- ViewHolder模式的sparseArray写法
- ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法
- "不忍直视"的ViewHolder模式
- ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法
- 使用ViewHolder模式优化ListView
- ViewHolder模式超简洁写法
- iOS开发 ☞ 各种CG结构体
- 相对路径与绝对路径
- Linux死锁调试之softlockup
- Fragment和Activity之间的数据传递(两种:Acitvity-->Fragment;Fragment---->Activity)
- JVM学习总结--体系结构、内存管理和垃圾回收
- ViewHolder模式
- 你的第一个网页
- untiy 3d ShaderLab_第7章_ Forward渲染路径_1_ForwardBase和ForwardAdd
- cmd used in sql tests (sql学习指南)
- 论程序员的自我修养
- MongoDB元素查询操作符
- mac在命令行里获取root权限
- 老式浏览器(IE6,IE7,IE8)识别html5标签
- DB2 只进行单个表空间的恢复