Adapter的继承

来源:互联网 发布:淘宝小泡沫的店假货 编辑:程序博客网 时间:2024/05/16 09:04

1.继承BaseAdapter类

(1).通过自定义的BaseAdapter展示ListView;

(2).动态修改、刷新ListView内容;

(3).在自定义的BaseAdapter中实现ListView内容的点击和长按点击事件;

(4).在BaseAdapter的getView方法中动态增加新组件;

public class MyListAdapter extends BaseAdapter {    private List<News> list;    private Context context;    private final int TYPE1=0;    private final int TYPE2=1;    public MyListAdapter(List<News> list, Context context) {        this.list = list;        this.context = context;    }   @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public int getItemViewType(int position) {        News news=list.get(position);        if(news.getImg1()==0){            return  TYPE1;        }else{            return  TYPE2;        }    }    @Override    public int getViewTypeCount() {        return 2;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder vh;        int type=getItemViewType(position);        if(convertView==null){            vh=new ViewHolder();            if(type==0){                convertView= LayoutInflater.from(context).inflate(R.layout.topnews1_layout,null);                vh.title=(TextView)convertView.findViewById(R.id.title);                vh.from= (TextView)convertView.findViewById(R.id.from);                vh.img=(ImageView)convertView.findViewById(R.id.img);                convertView.setTag(vh);            }else{                convertView= LayoutInflater.from(context).inflate(R.layout.topnews2_layout,null);                vh.title=(TextView)convertView.findViewById(R.id.title);                vh.from= (TextView)convertView.findViewById(R.id.from);                vh.img=(ImageView)convertView.findViewById(R.id.img);                vh.img1=(ImageView)convertView.findViewById(R.id.img1);                convertView.setTag(vh);            }        }else{            vh= (ViewHolder) convertView.getTag();        }        News news=list.get(position);        if(type==0){            vh.title.setText(news.getTitle());            vh.from.setText(news.getFrom());            vh.img.setImageResource(news.getImg());        }else{            vh.title.setText(news.getTitle());            vh.from.setText(news.getFrom());            vh.img.setImageResource(news.getImg());            vh.img1.setImageResource(news.getImg1());        }        return convertView;    }    private class ViewHolder{        TextView title;        TextView from;        ImageView img;        ImageView img1;    }}
最基本的需要继承四个方法,如果,有多个样式的话,需定义final TYPE类,然后加上getViewTypeCount()和getItemVireType()两个方法即可

记住别忘记定义ViewHolder类,来定义样式表的内容

2.继承PagerAdapter

实现内容无限循环的滑动

public class MyViewPagerAdapter extends PagerAdapter {    private List<ImageView> list;    public MyViewPagerAdapter(List<ImageView> list) {        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        container.addView(list.get(position));        return list.get(position);    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView(list.get(position));    }}必须继承这四种方法,后面的inistantiateItem()和destroyItem()方法需要自己手写继承


0 0
原创粉丝点击