pulltoRefresh里面有轮播和listView(代码)

关于轮播部分的代码显示不全,若查看请点击此处

关于listview的详解:若查看请点击此处

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--PullToRefreshScrollView 里面上部为一个viewpager轮播图,下部为一个listview-->
    <com.handmark.pulltorefresh.library.PullToRefreshScrollView
        android:id="@+id/two_pull"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrDrawable="@drawable/default_ptr_flip"
        ptr:ptrHeaderBackground="#383838"
        ptr:ptrHeaderTextColor="#FFFFFF">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v4.view.ViewPager
                android:id="@+id/two_vp"
                android:layout_width="match_parent"
                android:layout_height="200dp"></android.support.v4.view.ViewPager>

            <LinearLayout
                android:id="@+id/two_lin"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignBottom="@id/two_vp"
                android:gravity="center"
                android:orientation="horizontal"></LinearLayout>

            <com.bawei.text04.listview.ListView2
                android:id="@+id/two_lv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/two_vp"></com.bawei.text04.listview.ListView2>
        </RelativeLayout>

    </com.handmark.pulltorefresh.library.PullToRefreshScrollView>
</RelativeLayout>

Java代码

package com.bawei.text04.fragments;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;

import com.bawei.text04.R;
import com.bawei.text04.adapter.TwoAdapter;
import com.bawei.text04.adapter.Two_ImagePager;
import com.bawei.text04.bean.Result;
import com.bawei.text04.utils.MyTask;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by sky on 2017/11/15.
 */

public class TwoFragment extends Fragment {
    private View v;
    private PullToRefreshScrollView rsv;
    private ViewPager vp;
    private LinearLayout lin;
    private List<String> list;
    private List<Result.DataBean> lists = new ArrayList();//listView存放数据
    private ArrayList<ImageView> images;//存放小圆点控件的集合

    private Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            //获取当前正在显示的页面
            int index = vp.getCurrentItem();
            vp.setCurrentItem(index + 1);
            //改变小圆点
            setSelectedPoint((index + 1) % list.size());
            //延迟发送消息
            sendEmptyMessageDelayed(1, 2000);

        }
    };
    private int index;
    private ListView lv;
    private int pageIndex=0;
    private TwoAdapter adapter;


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        v = View.inflate(getActivity(), R.layout.two, null);
        //初始化组件
        initView();
        //初始化轮播
        initvp();
        //初使化refreshScrollView
        intRefreshScrollView();
        //请求数据
        requestData();
        return v;
    }
    private void initView() {
        rsv = v.findViewById(R.id.two_pull);//PullToRefreshScrollView
        vp = v.findViewById(R.id.two_vp);//ViewPager
        lin = v.findViewById(R.id.two_lin);//小圆点
        lv = v.findViewById(R.id.two_lv);//listview
    }
    private void requestData() {
        MyTask myTask=new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson=new Gson();
                Result result=gson.fromJson(jsonstr,Result.class);
                lists.addAll(result.getData());

                setAdapter();



            }
        });
        myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");

    }



    private void intRefreshScrollView() {

        //1.设置模式
        rsv.setMode(PullToRefreshBase.Mode.BOTH);

        //2.通过调用getLoadingLayoutProxy方法,设置下拉刷新状况布局中显示的文字 ,第一个参数为true,代表下拉刷新
        ILoadingLayout headLables = rsv.getLoadingLayoutProxy(true, false);
        headLables.setPullLabel("下拉刷新");
        headLables.setRefreshingLabel("正在刷新");
        headLables.setReleaseLabel("松开刷新");

        //2.设置上拉加载底部视图中显示的文字,第一个参数为false,代表上拉加载更多
        ILoadingLayout footerLables = rsv.getLoadingLayoutProxy(false, true);
        footerLables.setPullLabel("上拉加载");
        footerLables.setRefreshingLabel("正在载入...");
        footerLables.setReleaseLabel("松开加载更多");

        //3.设置监听事件
        rsv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {

                addToTop();
                refreshComplete();//刷新完成时关闭

            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                addToBottom();
                refreshComplete();

            }
        });
    }

    private void addToTop() {
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson = new Gson();
                Result result = gson.fromJson(jsonstr, Result.class);
                //清空数据
                lists.clear();
                //添加数据
                lists.addAll(result.getData());
                //设置适配器
                setAdapter();
            }
        });
        myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
    }

    private void addToBottom() {
        pageIndex++;
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson = new Gson();
                Result result = gson.fromJson(jsonstr, Result.class);
                lists.addAll(result.getData());
                setAdapter();
            }
        });
        myTask.execute("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+pageIndex);
    }

    private void setAdapter() {
        if(adapter==null){
            adapter=new TwoAdapter(lists,getActivity());
            lv.setAdapter(adapter);

        }else {
            adapter.notifyDataSetChanged();
        }
    }

    private void refreshComplete() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                rsv.onRefreshComplete();
            }
        }, 1000);
    }

    /**
     * 改变小圆点图片
     *
     * @param index 页面的下标
     */
    private void setSelectedPoint(int index) {
        for (int i = 0; i < images.size(); i++) {
            if (i == index) {
                images.get(i).setImageResource(R.drawable.point_selected);
            } else {
                images.get(i).setImageResource(R.drawable.point_un_selected);
            }
        }
    }

    private void initvp() {
        list = new ArrayList<>();
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151721118&di=649c9a43aed72fbc4d99ec1a031510c6&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F015c7d574b9f8f6ac72525aee98351.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151956771&di=0eb6f306991d24b67a13ceb336f80102&imgtype=0&src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F00613def3f1beb7a35ae136341be2b589bc46a2d.jpg_320x200.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151847685&di=c7a4b5d08ec43fa629bcb690039a7629&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_080625%2F20080625_2e91a10c444877e88827vri2ZKdGMvQo.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505151825129&di=70bf74b87d8a15cb91a2d79f15ed0eaf&imgtype=0&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_081016%2F20081016_fee215664d5740e56c13E2YB8giERFEX.jpg");
        list.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505746504&di=930c4d677a02328a142d6fa85ed14580&imgtype=jpg&er=1&src=http%3A%2F%2Fattimg.dospy.com%2Fimg%2Fday_090113%2F20090113_6ac58b42bea94f0b318e1B6BZb5lPZl5.jpg");
        //初始化小圆点
        initDoc();
        //设置适配器
        vp.setAdapter(new Two_ImagePager(getActivity(), list));
        //设置当前要显示的页面
        vp.setCurrentItem(list.size() * 10);
        //实现自动播放
        myHandler.sendEmptyMessageDelayed(1, 2000);

    }

    private void initDoc() {
        images = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            ImageView imageView = new ImageView(getActivity());
            //设置图片的缩放模式
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            //设置要显示的图片
            if (i == 0) {
                imageView.setImageResource(R.drawable.point_selected);
            } else {
                imageView.setImageResource(R.drawable.point_un_selected);
            }
            //设置宽度与高度
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(40, 40);
            params.setMargins(10, 0, 10, 0);
            //添加到底部容器中
            lin.addView(imageView, params);
            //添加到集合中
            images.add(imageView);
        }
    }


}
适配器:

TwoAdapter

package com.bawei.text04.adapter;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.bawei.text04.R;
import com.bawei.text04.bean.Result;
import com.bawei.text04.utils.ImageloaderUtil;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * Created by sky on 2017/11/16.
 */

public class TwoAdapter extends BaseAdapter{
    private List<Result.DataBean> lists;
    private Context context;
    //private DisplayImageOptions options;

//    public TwoAdapter(List<Result.DataBean> datas, Context context) {
//        this.datas = datas;
//        this.context = context;
//        options=new DisplayImageOptions.Builder()
//                .cacheInMemory(true)//使用内存缓存
//                .cacheOnDisk(true)//使用磁盘缓存
//                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片格式
//                .build();
//    }


    public TwoAdapter(List<Result.DataBean> lists, Context context) {
        this.lists = lists;
        this.context = context;
    }

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

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        ViewHolder holder = null;
        if(view==null){
            view=View.inflate(context, R.layout.item2,null);
            holder=new ViewHolder();
            holder.tvTitle= (TextView) view.findViewById(R.id.two_item_tv);
            holder.img= (ImageView) view.findViewById(R.id.two_item_img);

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

        }
        holder.tvTitle.setText(lists.get(i).getTitle());

            //imageLoader加载图片
            ImageLoader.getInstance().displayImage(lists.get(i).getImg(),holder.img, ImageloaderUtil.getImageOptions());//有图片是


        return view;
    }
    class ViewHolder{

        public TextView tvTitle;
        public ImageView img;
    }
}

listView继承类:ListView2

package com.bawei.text04.listview;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**
 * Created by sky on 2017/11/16.
 */

public class ListView2 extends ListView{
    public ListView2(Context context) {
        super(context);
    }

    public ListView2(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ListView2(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值