多条目加载

来源:互联网 发布:北京天际网络 编辑:程序博客网 时间:2024/06/10 08:12
package test.lilin.com.xlistduo;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;import test.lilin.com.xlistduo.xlist.XListView;public class MainActivity extends AppCompatActivity {    XListView xlv;    List<News> list;    Handler handler=new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xlv= (XListView) findViewById(R.id.xlv);        initData();         Myadapter myadapter=new Myadapter();        xlv.setPullLoadEnable(true);        xlv.setPullRefreshEnable(true);        xlv.setAdapter(myadapter);        xlv.setXListViewListener(new XListView.IXListViewListener() {            @Override            public void onRefresh() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        initData();                        Toast.makeText(MainActivity.this,"上啦",Toast.LENGTH_SHORT).show();                        xlv.stopRefresh();                    }                },2000);            }            @Override            public void onLoadMore() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        initData();                        Toast.makeText(MainActivity.this,"下啦",Toast.LENGTH_SHORT).show();                        xlv.stopRefresh();                    }                },2000);            }        });    }    class Myadapter extends BaseAdapter {        public static final int TYPE_ONE=0;        public static final int TYPE_TWO=1;        @Override        public int getCount() {            return list.size();        }        //在使用多条目加载的时候    返回当前position对应的类型        //************必须满足的条件   getItemViewType的返回值  必须要小于getViewTypeCount的返回值        @Override        public int getItemViewType(int position) {            if (list.get(position).getType()==10001){                return TYPE_ONE;            }else {                return TYPE_TWO;            }        }        //使用多条目加载时   一共有几种类型        //从写该方法后,listview控件会知道  当前的布局样式不止一种        //所以 当ListView发现convertview在复用时  类型不配不上时  会重写让convertView加载一遍布局        @Override        public int getViewTypeCount() {            return 2;        }        @Override        public Object getItem(int i) {            return null;        }        @Override        public long getItemId(int i) {            return 0;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            ViewHolder0 holder0 = null;            ViewHolder1 holder1 = null;            int type=getItemViewType(i);            if (view==null){                switch (type) {                    case TYPE_ONE:                        view = View.inflate(MainActivity.this, R.layout.list_item0, null);                        holder0 = new ViewHolder0();                        holder0.tv0 = (TextView) view.findViewById(R.id.tv0);                        view.setTag(holder0);                        break;                    case TYPE_TWO:                        view = View.inflate(MainActivity.this, R.layout.list_item1, null);                        holder1 = new ViewHolder1();                        holder1.tv1 = (TextView) view.findViewById(R.id.tv1);                        view.setTag(holder1);                        break;                    default:                        break;                }            }else{                if(type == TYPE_ONE){                    holder0 = (ViewHolder0) view.getTag();                }else{                    holder1 = (ViewHolder1) view.getTag();                }            }            //根据不同的情况  把进行赋值            if(type == TYPE_ONE){                holder0.tv0.setText(list.get(i).getTitle());            }else{                holder1.tv1.setText(list.get(i).getTitle());            }            return view;        }    }    public static class ViewHolder0{        TextView tv0;    }    public static class ViewHolder1{        TextView tv1;        ImageView iv1;    }    public void initData(){        list=new ArrayList<News>();        for (int i=0;i<100;i++){            News n;            if (i%7==5){                n=new News(10002,"广告"+i);            }else{                n=new News(10001,"正文标题"+i);            }            list.add(n);        }      }}
package test.lilin.com.xlistduo;/** * Created by せしおゆ on 2017/8/24. */public class News {    int type; //10001:显示新闻   10002:显示广告   20001 20002    String title;    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public News(int type, String title) {        super();        this.type = type;        this.title = title;    }    @Override    public String toString() {        return "News{" +                "type=" + type +                ", title='" + title + '\'' +                '}';    }}

原创粉丝点击