listview多条目加载简单应用

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{


    private XListView xlv;
    List<User.DataBean> list = new ArrayList<>();
    private MAdapter adapter;
    private Handler handler;
    int page;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //加载数据
        initData();
        //获得控件
        xlv=(XListView)findViewById(R.id.xlv);
        xlv.setPullLoadEnable(true);
        adapter = new MAdapter();
        xlv.setXListViewListener(this);
        //Handler
        handler = new Handler();








    }
    //加载数据方法
    private void initData() {
        new MAsyncTask().execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
    }
    //AsyncTask
    class MAsyncTask extends AsyncTask<String,Void,String>{


        @Override
        protected String doInBackground(String... strings) {
            return new NewWorkUtil().getJson(strings[0]);
        }


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();


            User user = gson.fromJson(s, User.class);


            list =user.getData();
            //设置适配器
            xlv.setAdapter(adapter);




        }
    }
    private void onLoad(){
        xlv.stopRefresh();
        xlv.stopLoadMore();
        xlv.setRefreshTime("刚刚");


    }
    //刷新
    @Override
    public void onRefresh() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                page=1;
                list.clear();
                initData();
                xlv.deferNotifyDataSetChanged();
                onLoad();
            }
        },2000);
    }
    //加载更多
    @Override
    public void onLoadMore() {
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                page++;
                initData();
                adapter.notifyDataSetChanged();;
                onLoad();
            }
        },2000);
    }
    //适配器类
    class MAdapter extends BaseAdapter {
        final int TYPE_1 = 0;
        final int TYPE_2 = 1;
        @Override
        public int getCount() {
            return list.size();
        }


        @Override
        public Object getItem(int i) {
            return list.get(i);
        }


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


        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder vh;
            int itemViewType = getItemViewType(i);
            //优化判断
            if(view==null){
                vh=new ViewHolder();
                switch (itemViewType){


                    case TYPE_1:
                        view=View.inflate(MainActivity.this,R.layout.lv1,null);
                        vh.tv1=(TextView)view.findViewById(R.id.tv1);
                        vh.tv2=(TextView)view.findViewById(R.id.tv2);
                        vh.img=(ImageView)view.findViewById(R.id.img);


                        vh.tv1.setText(list.get(i).getTitle());
                        vh.tv2.setText("2017-09-11");
                        ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh.img);


                        break;
                    case TYPE_2:
                        view=View.inflate(MainActivity.this,R.layout.lv2,null);
                        vh.tv11=(TextView)view.findViewById(R.id.tv11);
                        vh.tv22=(TextView)view.findViewById(R.id.tv22);
                        vh.tv11.setText(list.get(i).getTitle());
                        vh.tv22.setText("2017-09-11");
                        break;


                    default:break;




                }
                view.setTag(vh);
            }else{
                vh= (ViewHolder) view.getTag();
            }


            return view;
        }


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


        @Override
        public int getItemViewType(int position) {
            int i = position % 2;


            if(i==0){
                return TYPE_1;
            }else{
                return TYPE_2;
            }


        }
    }
    //ViewHolder
    class ViewHolder{
        TextView tv1,tv2,tv11,tv22;
        ImageView img;
    }


    //性能优化
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {


        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            this.finish();
        }
        return false;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值