封装的viewholder和adapter

public class MyActivity extends Activity {


    private ListView mListView;


    private List<Info> mInfos = new ArrayList<Info>();

    private Info info1 =new Info();
    private Info info2 =new Info();
    private Info info3 =new Info();
    private Info info4 =new Info();
    private Info info5 =new Info();
    private Info info6 =new Info();
    private Info info7 =new Info();
    /** * Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        info1.setTitle("你484傻 第1条");
        info1.setTime("20121230");
        info1.setImageView(R.drawable.ic_launcher);

        info2.setTitle("你484傻 第2条");
        info2.setTime("20121231");
        info2.setImageView(R.drawable.image1);
        info3.setTitle("你484傻 第3条");
        info3.setTime("20121231");
        info3.setImageView(R.drawable.ic_launcher);
        info4.setTitle("你484傻 第4条");
        info4.setTime("20121231");
        info4.setImageView(R.drawable.image1);
        info5.setTitle("你484傻 第5条");
        info5.setTime("20121231");
        info5.setImageView(R.drawable.ic_launcher);
        info6.setTitle("你484傻 第6条");
        info6.setTime("20121231");
        info6.setImageView(R.drawable.image1);
        info7.setTitle("你484傻 第7条");
        info7.setTime("20121231");
        info7.setImageView(R.drawable.ic_launcher);



        mInfos.add(info1);
        mInfos.add(info2);
        mInfos.add(info3);
        mInfos.add(info4);
        mInfos.add(info5);
        mInfos.add(info6);
        mInfos.add(info7);

        mListView= (ListView) findViewById(R.id.listview);
        mListView.setAdapter(new CommonAdapter<Info>(getApplicationContext(), mInfos,R.layout.listview_item)
        {

            @Override
            public void convert(ViewHolder viewHolder, Info item) {
                viewHolder.setText(R.id.text_item,item.getTitle());
                viewHolder.setImageResource(R.id.image_item,item.getImageView());
                viewHolder.setText(R.id.textview2,item.getTime());


            }

        });

       String result= HttpUtils.doGetAsyn("http://www.weather.com.cn/data/sk/101010100.html",null);

        Log.d("123",result);

    }
}
public abstract  class CommonAdapter <T> extends BaseAdapter {

    protected LayoutInflater inflater;
    protected Context mContext;
    protected List<T> mDatas;
    protected final int mItemLayoutId;

    public CommonAdapter(Context mContext, List<T> mDatas, int mItemLayoutId) {
        this.mItemLayoutId = mItemLayoutId;
        this.inflater=LayoutInflater.from(mContext);
        this.mContext = mContext;
        this.mDatas = mDatas;
    }

    @Override
    public int getCount() {
        return mDatas.size();
    }

    @Override
    public T getItem(int i) {
        return mDatas.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHolder viewHolder = getViewHolder(position, convertView, parent);
        convert(viewHolder, getItem(position));
        return viewHolder.getConvertView();
    }

    public abstract void convert(ViewHolder viewHolder, T item);

    private ViewHolder getViewHolder(int position, View convertView,
                                     ViewGroup parent)
    {
        return ViewHolder.get(mContext, convertView, parent, mItemLayoutId, position);
    }


}
public class ViewHolder {
    private int mPosition;
    private final SparseArray<View> mViews;//松散数组
    private View mConvertView;

    private ViewHolder(Context context, ViewGroup parent, int layoutId, int position)
    {
        this.mViews = new SparseArray<View>();
        mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false);
        //setTag
        mConvertView.setTag(this);


    }
    /** * 拿到一个ViewHolder对象 * @param context * @param convertView * @param parent * @param layoutId * @param position * @return */
    public static ViewHolder get(Context context, View convertView,
                                 ViewGroup parent, int layoutId, int position)
    {

        if (convertView == null)
        {
            return new ViewHolder(context, parent, layoutId, position);
        }
        return (ViewHolder) convertView.getTag();
    }
    /** * 通过控件的Id获取对于的控件,如果没有则加入views * @param viewId * @return */
    public <T extends View> T getView(int viewId)
    {

        View view = mViews.get(viewId);
        if (view == null)
        {
            view = mConvertView.findViewById(viewId);
            mViews.put(viewId, view);
        }
        return (T) view;
    }

    public View getConvertView()
    {
        return mConvertView;
    }

    /** * 为TextView设置字符串 * * @param viewId * @param text * @return */
    public ViewHolder setText(int viewId, String text)
    {
        TextView view = getView(viewId);
        view.setText(text);
        return this;
    }

    /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */
    public ViewHolder setImageResource(int viewId, int drawableId)
    {
        ImageView view = getView(viewId);
        view.setImageResource(drawableId);

        return this;
    }

    /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */
    public ViewHolder setImageBitmap(int viewId, Bitmap bm)
    {
        ImageView view = getView(viewId);
        view.setImageBitmap(bm);
        return this;
    }

    /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */
// public ViewHolder setImageByUrl(int viewId, String url)
// {
// ImageLoader.getInstance(3, Type.LIFO).loadImage(url,
// (ImageView) getView(viewId));
// return this;
// }




    public int getPosition()
    {
        return mPosition;
    }

}
public class Info {

    private String title;
    private  String time;

    private int imageView;


    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public int getImageView() {
        return imageView;
    }

    public void setImageView(int imageView) {
        this.imageView = imageView;
    }
}

你可能感兴趣的:(封装的viewholder和adapter)