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
原创粉丝点击