封装的viewholder和adapter

来源:互联网 发布:知乎 伊朗小公主 编辑:程序博客网 时间:2024/06/05 15:54
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;    }}
0 0
原创粉丝点击