xlistview

来源:互联网 发布:unity3d 寻路插件贴吧 编辑:程序博客网 时间:2024/06/06 08:36

//下载源码网址

https://github.com/Maxwin-z/XListView-Android

Main类

package com.example.asus.xlistview;import android.os.AsyncTask;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;import Bean.News;import Bean.Shiti;import view.XListView;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{    private myLv ad;    private XListView lv;    private int start=0;    private String url="http://v.juhe.cn/toutiao/index?type=top&&key=22a108244dbb8d1f49967cd74a0c144d";    private List<Shiti> list=new ArrayList<>();    private List<Shiti> list1=new ArrayList<>();   private Handler handler=new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initview();        new myAsynctask().execute(url);    }    private void initview() {        lv = (XListView) findViewById(R.id.lv);        lv.setXListViewListener(this);        lv.setPullLoadEnable(true);        list = new ArrayList<>();    }    @Override    public void onRefresh() {        handler .postDelayed(new Runnable() {            @Override            public void run() {                start+=5;                list.clear();                list = inititm(list1);                ad=new myLv();                lv.setAdapter(ad);                onload();            }        }, 2000);    }    private void onload() {            lv.stopRefresh();            lv.stopLoadMore();            lv.setRefreshTime("刚刚");    };    @Override    public void onLoadMore() {        handler .postDelayed(new Runnable() {            @Override            public void run() {                list = inititm(list1);                ad.notifyDataSetChanged();                onload();            }        }, 2000);    }    class myAsynctask extends AsyncTask<String,Void,String>{        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            System.out.println("s==="+s);            Gson gson=new Gson();            News news = gson.fromJson(s, News.class);            News.A result = news.result;            List<News.B> data = result.data;            for (int i = 0; i <data.size() ; i++) {                News.B b = data.get(i);                Shiti shiti=new Shiti();                shiti.title=b.title;                shiti.url=b.url;                shiti.thumbnail_pic_s=b.thumbnail_pic_s;                list1.add(shiti);            }            if(list1!=null){                list = inititm(list1);                ad = new myLv();                lv.setAdapter(ad);                lv.stopRefresh();                lv.stopLoadMore();            }        }        @Override        protected String doInBackground(String... strings) {            try {                URL url=new URL(strings[0]);                HttpURLConnection connection= (HttpURLConnection) url.openConnection();                connection.connect();                if(connection.getResponseCode()==200){                    StringBuffer sb=new StringBuffer();                    InputStream inputStream = connection.getInputStream();                    BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));                    String len=null;                    while ((len=br.readLine())!=null){                        sb.append(len);                    }                    return sb.toString();                }            } catch (Exception e) {                e.printStackTrace();            }            return null;        }    }    private List<Shiti> inititm(List<Shiti> list1) {        if(start>=list1.size()){            start=0;        }        for (int i = start; i <start+10; i++) {            list.add(list1.get(i));        }        return list;    }    class myLv extends BaseAdapter{        private final int a = 0;//多布局加载第一种布局        private final int b = 1;//多布局加载第二种布局        private final int num = 2;//一共两种布        @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 int getViewTypeCount() {            return num;        }        @Override        public int getItemViewType(int position) {            if(position%2==0){              return   a;            }else {                return  b;            }        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            int type = getItemViewType(i);               viewholder1 holder1=null;               viewholder2 holder2=null;            if(view==null){                switch (type){                    case a:                        view=View.inflate(MainActivity.this,R.layout.list_yi,null);                        holder1=new viewholder1();                        holder1.tv_title1=view.findViewById(R.id.tv_title1);                        holder1.img_tu1=view.findViewById(R.id.img_tu1);                        view.setTag(holder1);                        break;                    case b:                        view=View.inflate(MainActivity.this,R.layout.list_er,null);                        holder2=new viewholder2();                        holder2.tv_title2=view.findViewById(R.id.tv_title2);                        holder2.img_tu2=view.findViewById(R.id.img_tu2);                        view.setTag(holder2);                        break;                }            }else{                switch (type){                    case a:                        holder1= (viewholder1) view.getTag();                        break;                    case b:                        holder2= (viewholder2) view.getTag();                        break;                }            }            switch (type){                case a:                    holder1.tv_title1.setText(list.get(i).title);                    ImageLoader.getInstance().displayImage(list.get(i).thumbnail_pic_s,holder1.img_tu1);                    break;                case b:                    holder2.tv_title2.setText(list.get(i).title);                    ImageLoader.getInstance().displayImage(list.get(i).thumbnail_pic_s,holder2.img_tu2);                    break;            }            return view;        }        class  viewholder1 {            public   TextView tv_title1;            public ImageView  img_tu1;        }        class  viewholder2 {            public   TextView tv_title2;            public ImageView  img_tu2;        }    }}
初始化imgagelode

<application    android:name=".Applica"

package com.example.asus.xlistview;import android.app.Application;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;/** * Created by asus on 2017/8/15. */public class Applica extends Application{    @Override    public void onCreate() {        super.onCreate();        initimageloder();    }    private void initimageloder() {        DisplayImageOptions options=new DisplayImageOptions.Builder().                displayer(new RoundedBitmapDisplayer(360)).//圆角

  .cacheInMemory(true)//允许下载的图片缓存到SD卡中  .cacheOnDisk(true)

                build();        ImageLoaderConfiguration cofig=new ImageLoaderConfiguration.Builder(this)                .defaultDisplayImageOptions(options)                .build();        ImageLoader.getInstance().init(cofig);    }}