Adapter&&GroupAdapter&&VerifyAdapter&&PicAdapter

来源:互联网 发布:淘宝美工在家可以接单 编辑:程序博客网 时间:2024/05/16 01:05

1、普通的Adapter :


package com.pcs.learn.Adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import java.util.List;import java.util.Map;import com.pcs.learn.R;/** * Created by chaosi on 2015/8/11. */public class GroupAdapter extends BaseAdapter {    private LayoutInflater mInflater;    private List<Map<String, Object>> mAppList;    public GroupAdapter(Context c, List<Map<String, Object>> appList) {        mInflater=LayoutInflater.from(c);        mAppList=appList;    }    @Override    public int getCount() {        return mAppList.size();    }    @Override    public Object getItem(int position) {        return mAppList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder;        if(convertView==null){            convertView = mInflater.inflate(R.layout.item_list_group, null);            holder=new ViewHolder();            holder.tv_name=(TextView)convertView.findViewById(R.id.name);            holder.tv_kind=(TextView)convertView.findViewById(R.id.tv_kind);            holder.tv_intro=(TextView)convertView.findViewById(R.id.tv_intro);            convertView.setTag(holder);        }else{            holder=(ViewHolder)convertView.getTag();        }        holder.tv_name.setText((String)mAppList.get(position).get("name"));        holder.tv_kind.setText((String)mAppList.get(position).get("kind"));        holder.tv_intro.setText("签名:"+mAppList.get(position).get("intro"));        return convertView;    }    private class ViewHolder{        TextView tv_name;        TextView tv_kind;        TextView tv_intro;    }}


2、GroupAdapter


package com.npd.learn.Adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.RelativeLayout;import android.widget.TextView;import com.npd.learn.R;import com.npd.learn.Utils.Utils;import java.util.List;import java.util.Map;/** * Created by chaosi on 2015/8/11. */public class GroupAdapter extends BaseAdapter {    private Context mContext;    private LayoutInflater mInflater;    private List<Map<String, Object>> mAppList;    private ViewHolder holder;    private MyOnItemClickListener listener;    public GroupAdapter(Context c, List<Map<String, Object>> appList) {        mContext=c;        mInflater=LayoutInflater.from(c);        mAppList=appList;    }    public void setMyOnItemClickListener(MyOnItemClickListener listener){        this.listener=listener;    }    @Override    public int getCount() {        return mAppList.size()+1;    }    @Override    public Object getItem(int position) {        if(position==0){            return null;        }else{            return mAppList.get(position-1);        }    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        final int mPosition=position;        if(mPosition==0){            convertView = mInflater.inflate(R.layout.item_list_group_head, null);            RelativeLayout layout=(RelativeLayout)convertView.findViewById(R.id.newGroup);            TextView tv_text=(TextView)convertView.findViewById(R.id.groupText);            layout.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    listener.onItemClick(mPosition);                }            });            tv_text.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    //什么也不做,故意使该监听事件与ListView的ItemListener冲突                }            });        }else{            if(mPosition==1 || convertView==null || convertView.getTag()==null){                convertView = mInflater.inflate(R.layout.item_list_group, null);                holder=new ViewHolder();                holder.tv_name=(TextView)convertView.findViewById(R.id.name);                holder.tv_kind=(TextView)convertView.findViewById(R.id.tv_kind);                holder.tv_intro=(TextView)convertView.findViewById(R.id.tv_intro);                convertView.setTag(holder);            }else{                holder=(ViewHolder)convertView.getTag();            }           try{               holder.tv_name.setText((String)mAppList.get(mPosition-1).get("name"));               holder.tv_kind.setText((String)mAppList.get(mPosition-1).get("kind"));               holder.tv_intro.setText("签名:"+mAppList.get(mPosition-1).get("intro"));           }catch(Exception e){               Utils.log(e.toString());               e.printStackTrace();           }        }        return convertView;    }    private class ViewHolder{        TextView tv_name;        TextView tv_kind;        TextView tv_intro;    }    public interface MyOnItemClickListener{        public void onItemClick(int position);    }}



3、VerifyAdapter


package com.npd.learn.Adapter;import java.util.List;import java.util.Map;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Color;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.Checkable;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;import com.npd.learn.R;import com.npd.learn.Utils.Utils;/** * Created by chaosi on 2015/7/17. */public class VerifyAdapter extends BaseAdapter {    private class buttonViewHolder {        ImageView image;        TextView text;        Button button;    }    private class bottomHolder{        TextView text;        ProgressBar progressBar;    }    private LayoutInflater mInflater;    private Context mContext;    private List<Map<String, Object>> mAppList;    private buttonViewHolder holder;    private bottomHolder bHolder;    private VerifyInterface verifyInterface;    public VerifyAdapter(Context c, VerifyInterface mInterface, List<Map<String, Object>> appList) {        mContext = c;        verifyInterface = mInterface;        mInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        mAppList = appList;    }    //    @Override    public int getCount() {        return mAppList.size()+1;    }    //  @Override    public Object getItem(int position) {        return mAppList.get(position);    }    //@Override    public long getItemId(int position) {        return position;    }    //  @Override    public View getView(final int position, View convertView, ViewGroup parent) {        int mSize=mAppList.size();        if(position==mSize){            convertView = mInflater.inflate(R.layout.item_list_verify_bottom, null);            bHolder = new bottomHolder();            bHolder.text = (TextView)convertView.findViewById(R.id.tv_more);            bHolder.progressBar = (ProgressBar)convertView.findViewById(R.id.loading);            convertView.setTag(bHolder);            bHolder.text.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    bHolder.text.setVisibility(View.GONE);                    bHolder.progressBar.setVisibility(View.VISIBLE);                    verifyInterface.loadMore(bHolder.text, bHolder.progressBar);                }            });        }else{            convertView = mInflater.inflate(R.layout.item_list_verify, null);            holder = new buttonViewHolder();            holder.image = (ImageView)convertView.findViewById(R.id.image);            holder.text = (TextView)convertView.findViewById(R.id.msg);            holder.button = (Button)convertView.findViewById(R.id.agree);            convertView.setTag(holder);            Map<String, Object> appInfo = mAppList.get(position);            if (appInfo != null) {                String groupName = (String)appInfo.get("text");                boolean hasAgree=(boolean)appInfo.get("hasAgree");                holder.text.setText(groupName);                if(hasAgree){                    holder.button.setText("已同意");                    holder.button.setTextColor(mContext.getResources().getColor(R.color.no));                    holder.button.setBackground(mContext.getResources().getDrawable(R.drawable.group_search_button_shape));                }else{                    holder.button.setText("同意");                    holder.button.setTextColor(Color.WHITE);                    holder.button.setBackground(mContext.getResources().getDrawable(R.drawable.group_verify_button_shape));                }                if(!hasAgree){                    holder.button.setOnClickListener(new View.OnClickListener() {                        @Override                        public void onClick(View v) {                            verifyInterface.agree(position);                        }                    });                }            }        }        return convertView;    }    public interface VerifyInterface{        public void agree(int position);        public void loadMore(TextView textView, ProgressBar progressBar);    }}




4、PicAdapter(让SimpleAdapter匹配Bitmap)


package com.npd.learn.Adapter;import java.util.List;import java.util.Map;import android.content.Context;import android.graphics.Bitmap;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Checkable;import android.widget.ImageView;import android.widget.SimpleAdapter;import android.widget.TextView;/** * Created by chaosi on 2015/7/17. */public class PicAdapter extends SimpleAdapter {    private int[] mTo;    private String[] mFrom;    private ViewBinder mViewBinder;    private List<? extends Map<String, ?>> mData;    private int mResource;    @SuppressWarnings("unused")    private int mDropDownResource;    private LayoutInflater mInflater;    public PicAdapter(Context context,                      List<? extends Map<String, ?>> data, int resource, String[] from,                      int[] to) {        super(context, data, resource, from, to);        mData = data;        mResource = mDropDownResource = resource;        mFrom = from;        mTo = to;        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    }    /**     * @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)     */    public View getView(int position, View convertView, ViewGroup parent) {        return createViewFromResource(position, convertView, parent, mResource);    }    private View createViewFromResource(int position, View convertView,                                        ViewGroup parent, int resource) {        View v;        if (convertView == null) {            v = mInflater.inflate(resource, parent, false);            final int[] to = mTo;            final int count = to.length;            final View[] holder = new View[count];            for (int i = 0; i < count; i++) {                holder[i] = v.findViewById(to[i]);            }            v.setTag(holder);        } else {            v = convertView;        }        bindView(position, v);        return v;    }    @SuppressWarnings("rawtypes")    private void bindView(int position, View view) {        final Map dataSet = mData.get(position);        if (dataSet == null) {            return;        }        final ViewBinder binder = mViewBinder;        final View[] holder = (View[]) view.getTag();        final String[] from = mFrom;        final int[] to = mTo;        final int count = to.length;        for (int i = 0; i < count; i++) {            final View v = holder[i];            if (v != null) {                final Object data = dataSet.get(from[i]);                String text = data == null ? "" : data.toString();                if (text == null) {                    text = "";                }                boolean bound = false;                if (binder != null) {                    bound = binder.setViewValue(v, data, text);                }                if (!bound) {                    if (v instanceof Checkable) {                        if (data instanceof Boolean) {                            ((Checkable) v).setChecked((Boolean) data);                        } else {                            throw new IllegalStateException(v.getClass().getName() +                                    " should be bound to a Boolean, not a " + data.getClass());                        }                    } else if (v instanceof TextView) {                        // Note: keep the instanceof TextView check at the bottom of these                        // ifs since a lot of views are TextViews (e.g. CheckBoxes).                        //setViewText((TextView) v, text);                        ((TextView) v).setText(text);                    } else if (v instanceof ImageView) {                        if (data instanceof Integer) {                            setViewImage((ImageView) v, (Integer) data);                        }                        else if(data instanceof Bitmap) {                                                          //添加data是Bitmap型的情况                            ((ImageView) v).setImageBitmap((Bitmap)data);                        }                    }else {                        throw new IllegalStateException(v.getClass().getName() + " is not a " +                                " view that can be bounds by this SimpleAdapter");                    }                }            }        }    }    public void setViewImage(ImageView v, int value) {        v.setImageResource(value);    }}







0 0
原创粉丝点击