上拉刷新下拉加载

来源:互联网 发布:阿里云短信发送 c 编辑:程序博客网 时间:2024/06/05 02:27
public class Fragment1 extends Fragment implements ViewPager.OnPageChangeListener ,XListView.IXListViewListener, AdapterView.OnItemClickListener {    private ViewPager vp;     private XListView lv_list;    private List<String> urls;//轮播图片的集合     private View view;    private LinearLayout layout;    private NewsDao dao;    private List<ImageView> list_img;//小圆点集合    private NewsAdapter na;    private List<News> list;//加载数据集合    private int start=0;//初始值    private List<News> book;//加载数据新集合    private int num=10;//跳转数    private String url="http://japi.juhe.cn/comic/book?key=1e58b105e63d17c29181e6cea32b0279&skip=";//请求数据的路径    private GuangBoPanDuan  gb ; //广播监听    private List<News> listt; //数据库返回集合    // 自动轮播    private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {          int position=vp.getCurrentItem();            position++;            vp.setCurrentItem(position);        }    };    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view=View.inflate(getActivity(), R.layout.fragment1,null);        initview();        initdata();        addDot();        vp.setAdapter(new MyPager());        vp.setOnPageChangeListener(this);        lunbo();        vp.setCurrentItem(10000*list_img.size());//轮播次数        gb =new GuangBoPanDuan();//内部类         //注册广播(动态)       IntentFilter filter=new IntentFilter();        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);        getActivity().registerReceiver(gb,filter);        return view;    }    /**     * 轮播方法     */    public void lunbo(){        Timer timer=new Timer();        TimerTask task=new TimerTask() {            @Override            public void run() {                handler.sendEmptyMessage(0);            }        };        timer.schedule(task,3000,3000);    }    private void initdata() {        dao=new NewsDao(getActivity());        list_img=new ArrayList<ImageView>();        urls=new ArrayList<String>();        list=new ArrayList<News>();        book=new ArrayList<News>();         //图片加载到集合里       urls.add("http://img3.imgtn.bdimg.com/it/u=1865208273,4010052244&fm=26&gp=0.jpg");        urls.add("http://img1.imgtn.bdimg.com/it/u=3308987153,427503974&fm=26&gp=0.jpg");        urls.add("http://img2.imgtn.bdimg.com/it/u=2029864078,51167410&fm=26&gp=0.jpg");    }    /**     * 加载小圆点的方法     */    public void addDot(){        for (int i = 0; i <urls.size(); i++) {            ImageView iv=new ImageView(getActivity());            if(i==0){                iv.setImageResource(R.drawable.check);            }else{                iv.setImageResource(R.drawable.nornal);            }            LinearLayout.LayoutParams pp=new LinearLayout.LayoutParams(30,30);            pp.setMargins(10,0,10,0);            layout.addView(iv,pp);            list_img.add(iv);        }    }    //初始化view    private void initview() {        vp=view.findViewById(R.id.vp);        lv_list=view.findViewById(R.id.lv_list);        layout=view.findViewById(R.id.layout);        lv_list.setPullLoadEnable(true); //支持xlistview下拉加载上拉刷新        lv_list.setXListViewListener(this);//监听事件 返回两个方法        lv_list.setOnItemClickListener(this);    }    /**     * viewpager的滑动监听事件     * @param position     * @param positionOffset     * @param positionOffsetPixels     */    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        for (int i = 0; i < list_img.size(); i++) {            if(i==position%list_img.size()){                list_img.get(i).setImageResource(R.drawable.check);            }else{                list_img.get(i).setImageResource(R.drawable.nornal);            }        }    }    @Override    public void onPageSelected(int position) {    }    @Override    public void onPageScrollStateChanged(int state) {    }    //xlistview点击事件    @Override    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {       Intent intent=new Intent(getActivity(), ZjActivity.class);        intent.putExtra("bookname",list.get(i-1).name);        startActivity(intent);    }    //适配器    public class MyPager extends PagerAdapter{        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            View view=View.inflate(getActivity(),R.layout.img,null);            ImageView lb_img=view.findViewById(R.id.lb_img);            DisplayImageOptions options=new DisplayImageOptions.Builder().build();            ImageLoaderConfiguration con=new ImageLoaderConfiguration.Builder(getActivity()).defaultDisplayImageOptions(options).build();            ImageLoader.getInstance().init(con);            ImageLoader.getInstance().displayImage(urls.get(position%urls.size()),lb_img);            container.addView(view);            return view;        }    }    /**     * 加载数据     */     class MyAsyncTask extends AsyncTask<String,Integer,String>{        @Override        protected String doInBackground(String... strings) {            try{                StringBuffer result=new StringBuffer();                URL urll=new URL(strings[0]);                HttpURLConnection connection= (HttpURLConnection) urll.openConnection();                connection.connect();                if(200==connection.getResponseCode()){                    BufferedReader read=new BufferedReader(new InputStreamReader(connection.getInputStream()));                    String line=null;                    while((line=read.readLine())!=null){                        result.append(line);                    }                    return result.toString();                }            }catch (Exception e){                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(String s) {            pardata(s);            
            dao.insert(s);//加载数据库里
} } /** * 解析json * @param s */ private void pardata(String s) { try{ JSONObject obj=new JSONObject(s); JSONObject resultobj=obj.getJSONObject("result"); JSONArray ArrayData=resultobj.getJSONArray("bookList"); if(ArrayData!=null&ArrayData.length()>0){ for (int i = 0; i <ArrayData.length() ; i++) { JSONObject data= (JSONObject) ArrayData.get(i); News news=new News(); news.name=data.getString("name"); news.area=data.getString("area"); news.coverImg=data.getString("coverImg"); list.add(news); } } if(list!=null){ book=new ArrayList<>(); for (int i = 0; i <start+5 ; i++) { book.add(list.get(i));//从大集合提出数据放入小集合里 } start+=5; na=new NewsAdapter(getActivity(),book); lv_list.setAdapter(na); lv_list.stopRefresh(); lv_list.stopLoadMore(); } }catch(Exception e){ e.printStackTrace(); } } //刷新 @Override public void onRefresh() { num++; start=0; list.clear(); new MyAsyncTask().execute(url+num); } //加载 @Override public void onLoadMore() { if(start+5<=list.size()){ for (int i = start; i <start+5 ; i++) { book.add(list.get(i)); } start+=5; }else{ getActivity().runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getActivity(),"已没有更多",Toast.LENGTH_SHORT).show(); } }); } lv_list.stopLoadMore(); } //广播监听来判断网络 public class GuangBoPanDuan extends BroadcastReceiver { //配置文件来静态加载 @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); if (info != null && info.isAvailable()) { String name = info.getTypeName(); new MyAsyncTask().execute(url+num);//有网则从网络上请求数据 if (info.getType() == cm.TYPE_WIFI) { Toast.makeText(context, name, Toast.LENGTH_SHORT).show(); } else if (info.getType() == cm.TYPE_MOBILE) { //3g Toast.makeText(context, name, Toast.LENGTH_SHORT).show(); } } else { //网络断开 Toast.makeText(context, "无网络", Toast.LENGTH_SHORT).show();
                    listt=dao.select();
                for (News news : listt) {                 //  Toast.makeText(context, news.jsonc, Toast.LENGTH_SHORT).show();                     pardata(news.jsonc );                    }
 
 } } } } //销毁 @Override public void onDestroy() { super.onDestroy(); if (gb!=null){ getActivity().unregisterReceiver(gb); } }}