您的位置:首页 > 其它

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();

            }
        });

    }

}




下拉刷新后

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: