PullToRefreshListView

//依赖
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'

 
<com.handmark.pulltorefresh.library.PullToRefreshListView
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    android:id="@+id/pull"
    ptr:ptrDrawable="@mipmap/ic_launcher"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
</com.handmark.pulltorefresh.library.PullToRefreshListView>



public class MainActivity extends AppCompatActivity {
private String name="http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private String name1="http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1";
    private PullToRefreshListView pull;
    List<Mybean.DataBean> list=new ArrayList<>();
    private Myadapter my;
    private Banner ba;
    List<String> listtitle=new ArrayList<>();
    List<String> listimage=new ArrayList<>();
    int i=1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Myask().execute(name);
        pull = findViewById(R.id.pull);
        my = new Myadapter();
        pull.setAdapter(my);

        View view = View.inflate(this, R.layout.ban, null);

        //添加头布局
        pull.getRefreshableView().addHeaderView(view);
        ba = view.findViewById(R.id.ba);

        new Myasynctask().execute(name1);

        initIndicator();

        //设置可以上拉加载更多;
        pull.setMode(PullToRefreshBase.Mode.BOTH);

        //记着在Asynctask的onPostExecute方法里面加上  //停止刷新
      //  pull.onRefreshComplete();代码

        pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                list.clear();
                i=1;
                new Myask().execute(name+i);
                Toast.makeText(MainActivity.this,name+i,Toast.LENGTH_LONG).show();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                   i++;
new Myask().execute(name+i); Toast.makeText(MainActivity.this,name+i,Toast.LENGTH_LONG).show(); } }); } class Myasynctask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { return Myutil.tonet(strings[0]); } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); Mybean1 mybean1 = gson.fromJson(s, Mybean1.class); List<Mybean1.DataBean> data = mybean1.getData(); for (int i=0;i<data.size();i++){ listtitle.add(data.get(i).getTitle()); listimage.add(data.get(i).getUserImg()); } ba.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE); ba.setBannerTitles(listtitle); ba.setImages(listimage); ba.setImageLoader(new Myiag()); ba.isAutoPlay(true); ba.setDelayTime(1000); ba.start(); } } class Myiag extends com.youth.banner.loader.ImageLoader{ @Override public void displayImage(Context context, Object path, ImageView imageView) { ImageLoader.getInstance().displayImage((String) path,imageView); } } class Myadapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @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) { if (view==null){ view = View.inflate(MainActivity.this, R.layout.listview, null); } TextView tv= view.findViewById(R.id.tv); ImageView iv= view.findViewById(R.id.iv); tv.setText(list.get(i).getNews_title()); ImageLoader.getInstance().displayImage(list.get(i).getPic_url(),iv, ImageLoaderUtils_circle.getDisplayImageOption()); return view; } } class Myask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { return Myutil.tonet(strings[0]); } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); Mybean mybean = gson.fromJson(s, Mybean.class); List<Mybean.DataBean> data = mybean.getData(); list.addAll(data); my.notifyDataSetChanged(); //停止刷新 pull.onRefreshComplete(); } } private void initIndicator() { ILoadingLayout startLabels = pull .getLoadingLayoutProxy(true, false); startLabels.setPullLabel("你可劲拉,拉...");// 刚下拉时,显示的提示 startLabels.setRefreshingLabel("好嘞,正在刷新...");// 刷新时 startLabels.setReleaseLabel("你敢放,我就敢刷新...");// 下来达到一定距离时,显示的提示 ILoadingLayout endLabels = pull.getLoadingLayoutProxy( true, false); endLabels.setPullLabel("下拉试试.");// 刚下拉时,显示的提示 endLabels.setRefreshingLabel("试试就试试");// 刷新时 endLabels.setReleaseLabel("不服还是咋的");// 下来达到一定距离时,显示的提示 }

}

显然在实际操作的时候也会用到其他监听

 setOnScrollListener()

 SCROLL_STATE_TOUCH_SCROLL 正在滚动    
 SCROLL_STATE_FLING 手指做了抛的动作(手指离开屏幕前,用力滑了一下)    
 SCROLL_STATE_IDLE 停止滚动     

setOnLastItemVisibleListener

当用户拉到底时调用  

setOnItemClickListener()

为pullToRefresh中每一个item设置事件

ptrRefreshableViewBackground 设置整个mPullRefreshListView的背景色

ptrHeaderBackground 设置下拉Header或者上拉Footer的背景色

ptrHeaderTextColor 用于设置Header与Footer中文本的颜色

ptrHeaderSubTextColor 用于设置Header与Footer中上次刷新时间的颜色

ptrShowIndicator如果为true会在mPullRefreshListView中出现icon,右上角和右下角,挺有意思的。

ptrHeaderTextAppearance , ptrSubHeaderTextAppearance分别设置拉Header或者上拉Footer中字体的类型颜色等等。

ptrRotateDrawableWhilePulling当动画设置为rotate时,下拉是是否旋转。

ptrScrollingWhileRefreshingEnabled刷新的时候,是否允许ListView或GridView滚动。觉得为true比较好。

ptrListViewExtrasEnabled 决定了Header,Footer以何种方式加入mPullRefreshListView,true为headView方式加入,就是滚动时刷新头部会一起滚动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值