ListView 与BaseAdapter

BaseAdapter

编写自定义适配类,然后拓展BaseAdapter

具体继承方法

单一布局

int getCount()    总数量
Object getItem     根据position得到某一行
long getItemId     得到某一行的Id
View getView        为界面填充数据,返回视图,主要写一些参数的得到,和赋值

多布局,需要加入,先定义final 变量
int getItemViewType     得到布局的类型type
int getViewTypeCount()   得到布局的总数



案列:
多布局新闻页面
  lv= (ListView) findViewById(R.id.lv);
    List<News2> list=new ArrayList();
    News2 nw =new News2("新闻1","今天",R.mipmap.f1,0,0,0,"通讯");
    list.add(nw);
    nw =new News2("新闻1","今天",R.mipmap.f1,0,0,0,"通讯");
    list.add(nw);
     nw =new News2("新闻1","今天",R.mipmap.f1,R.mipmap.f1,R.mipmap.f1,0,"通讯");
    list.add(nw);
    lv.setAdapter(new BaseMultAdapter(list,this));
}
BaseAdapter
  private List<News2> myData;
    private Context context;
    private final int TYPE1=0;
    private final int TYPE2=1;

    public BaseMultAdapter(List<News2> myData, Context context) {
        this.myData = myData;
        this.context = context;
    }

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

    @Override
    public Object getItem(int position) {
        return myData.get(position);
    }

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

    @Override
    public int getItemViewType(int position) {
        if (myData.get(position).getImg1()==0){
            return TYPE1;
        }else{
            return TYPE2;
        }
    }

    @Override
    public int getViewTypeCount() {
       return  2;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final ViewHold vh;
        int type=getItemViewType(position);
        if (convertView==null){
            vh=new ViewHold();
           if (type==0){
               convertView= LayoutInflater.from(context).inflate(R.layout.listview_layout3,null);
               vh.title= (TextView) convertView.findViewById(R.id.tv1);
               vh.from= (TextView) convertView.findViewById(R.id.tv3);
               vh.from= (TextView) convertView.findViewById(R.id.tv3);
               vh.pubData= (TextView) convertView.findViewById(R.id.tv5);
               vh.img= (ImageView) convertView.findViewById(R.id.iv);
               convertView.setTag(vh);
           }else if(type==1){
               convertView=LayoutInflater.from(context).inflate(R.layout.listview_layout4,null);
               vh.img1= (ImageView) convertView.findViewById(R.id.iv1);
               vh.img2= (ImageView) convertView.findViewById(R.id.iv2);
               vh.img3= (ImageView) convertView.findViewById(R.id.iv3);
               convertView.setTag(vh);
           }
        }else{
            vh= (ViewHold) convertView.getTag();
        }
        if (type==0){
            vh.img.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "点击了图片", Toast.LENGTH_SHORT).show();
                }
            });
        }
        News2 news2=myData.get(position);
        if (type==0){
            vh.title.setText(news2.getTitle());
            vh.pubData.setText(news2.getPubData());
            vh.from.setText(news2.getFrom());
            vh.img.setImageResource(news2.getImg());
        }else if (type==1){
            vh.img1.setImageResource(news2.getImg1());
            vh.img2.setImageResource(news2.getImg2());
            vh.img3.setImageResource(news2.getImg3());
        }

        return convertView;
    }
    public  class ViewHold{
        //布局1使用的控件
        TextView title;
        TextView pubData;
        TextView from;
        ImageView img;
        //布局2 使用的控件
        ImageView img1;
        ImageView img2;
        ImageView img3;
    }
}
需要扩充新闻类



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值