PullToRefreshScrollView的应用
2017-12-17 20:39
267 查看
//使用之前需要导入依赖库
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
//布局
<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
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"
android:id="@+id/psv"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrAnimationStyle="flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
<!--banner-->
<!--listview-->
<!---ScrollView 只能有一个子孩子-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.youth.banner.Banner
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/mybanner"></com.youth.banner.Banner>
<!--<ListView-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:id="@+id/lv"></ListView>-->
<!-- 在这里需要自定义listview,调用包名类名-->
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
//java代码==========================================================
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.ScrollView;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.youth.banner.Banner;
import java.util.ArrayList;
import java.util.List;
import zhanghaijiao.bawei.com.pulltorefresh_demo2.utils.MyNetTask;
public class MainActivity extends AppCompatActivity {
private Banner myBanner;
private PullToRefreshScrollView psv;
private ListView listView;
private String urlPart="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page=";
private int pageIndex=1;
private String url=urlPart+pageIndex;
private MyAdapter adapter;
private List<Result1.NewslistBean> datas=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myBanner = findViewById(R.id.mybanner);
listView = findViewById(R.id.lv);
psv = findViewById(R.id.psv);
//初使化psv
initPsv();
//请求网络数据,展示轮播图
MyNetTask task=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result result = gson.fromJson(jsonStr, Result.class);
//图片的url地址
List<String> urls=new ArrayList<String>();
List<Result.DataScrollBean> dataScroll = result.getDataScroll();
for(int i=0;i<dataScroll.size();i++){
urls.add("http://www.93.gov.cn"+dataScroll.get(i).getIMAGEURL());
}
setBanner(urls);
}
});
task.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
datas.addAll(result1.getNewslist());
setAdapter();
}
});
task1.execute(url);
}
private void initPsv() {
//1.设置模式
psv.setMode(PullToRefreshBase.Mode.BOTH);
//2.设置头尾布局的文字
ILoadingLayout headerLayout = psv.getLoadingLayoutProxy(true, false);
headerLayout.setPullLabel("下拉刷新");
headerLayout.setReleaseLabel("放开刷新");
headerLayout.setRefreshingLabel("正在刷新。。。。");
ILoadingLayout footerLayout = psv.getLoadingLayoutProxy(false, true);
footerLayout.setPullLabel("上拉加载");
footerLayout.setReleaseLabel("放开加载");
footerLayout.setRefreshingLabel("正在加载。。。。");
//3.设置回调接口
psv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
pageIndex=1;
url=urlPart+pageIndex;
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
//清空
datas.clear();
//添加新数据到集合中
datas.addAll(result1.getNewslist());
setAdapter();
//关闭头尾布局
psv.onRefreshComplete();
}
});
task1.execute(url);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
//加载更多
pageIndex++;
url=urlPart+pageIndex;
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(Str
4000
ing jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
//添加新数据到集合中
datas.addAll(result1.getNewslist());
setAdapter();
//关闭头尾布局
psv.onRefreshComplete();
}
});
task1.execute(url);
}
});
}
public void setAdapter(){
if(adapter==null){
adapter=new MyAdapter(this,datas);
listView.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}
//利用banner
private void setBanner(List<String> urls) {
//1.设置一个图片加载器
myBanner.setImageLoader(new MyBannerLoader());
//2.设置图片集合List<String> lists
myBanner.setImages(urls);
//3.启动
myBanner.start();
}
}
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
//布局
<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
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"
android:id="@+id/psv"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrAnimationStyle="flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
<!--banner-->
<!--listview-->
<!---ScrollView 只能有一个子孩子-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.youth.banner.Banner
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/mybanner"></com.youth.banner.Banner>
<!--<ListView-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="match_parent"-->
<!--android:id="@+id/lv"></ListView>-->
<!-- 在这里需要自定义listview,调用包名类名-->
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
//java代码==========================================================
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.ScrollView;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.youth.banner.Banner;
import java.util.ArrayList;
import java.util.List;
import zhanghaijiao.bawei.com.pulltorefresh_demo2.utils.MyNetTask;
public class MainActivity extends AppCompatActivity {
private Banner myBanner;
private PullToRefreshScrollView psv;
private ListView listView;
private String urlPart="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page=";
private int pageIndex=1;
private String url=urlPart+pageIndex;
private MyAdapter adapter;
private List<Result1.NewslistBean> datas=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myBanner = findViewById(R.id.mybanner);
listView = findViewById(R.id.lv);
psv = findViewById(R.id.psv);
//初使化psv
initPsv();
//请求网络数据,展示轮播图
MyNetTask task=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result result = gson.fromJson(jsonStr, Result.class);
//图片的url地址
List<String> urls=new ArrayList<String>();
List<Result.DataScrollBean> dataScroll = result.getDataScroll();
for(int i=0;i<dataScroll.size();i++){
urls.add("http://www.93.gov.cn"+dataScroll.get(i).getIMAGEURL());
}
setBanner(urls);
}
});
task.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
datas.addAll(result1.getNewslist());
setAdapter();
}
});
task1.execute(url);
}
private void initPsv() {
//1.设置模式
psv.setMode(PullToRefreshBase.Mode.BOTH);
//2.设置头尾布局的文字
ILoadingLayout headerLayout = psv.getLoadingLayoutProxy(true, false);
headerLayout.setPullLabel("下拉刷新");
headerLayout.setReleaseLabel("放开刷新");
headerLayout.setRefreshingLabel("正在刷新。。。。");
ILoadingLayout footerLayout = psv.getLoadingLayoutProxy(false, true);
footerLayout.setPullLabel("上拉加载");
footerLayout.setReleaseLabel("放开加载");
footerLayout.setRefreshingLabel("正在加载。。。。");
//3.设置回调接口
psv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
pageIndex=1;
url=urlPart+pageIndex;
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(String jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
//清空
datas.clear();
//添加新数据到集合中
datas.addAll(result1.getNewslist());
setAdapter();
//关闭头尾布局
psv.onRefreshComplete();
}
});
task1.execute(url);
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
//加载更多
pageIndex++;
url=urlPart+pageIndex;
MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {
@Override
public void getJsonData(Str
4000
ing jsonStr) {
Gson gson=new Gson();
Result1 result1 = gson.fromJson(jsonStr, Result1.class);
//添加新数据到集合中
datas.addAll(result1.getNewslist());
setAdapter();
//关闭头尾布局
psv.onRefreshComplete();
}
});
task1.execute(url);
}
});
}
public void setAdapter(){
if(adapter==null){
adapter=new MyAdapter(this,datas);
listView.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}
//利用banner
private void setBanner(List<String> urls) {
//1.设置一个图片加载器
myBanner.setImageLoader(new MyBannerLoader());
//2.设置图片集合List<String> lists
myBanner.setImages(urls);
//3.启动
myBanner.start();
}
}
相关文章推荐
- AutoScrollViewPager与PullToRefreshScrollView冲突解决
- PullToRefreshScrollView滑动监听问题
- Android ScrollView+ViewPager+PullToRefreshListView
- PullToRefreshScrollView和listview的冲突
- PullToRefreshScrollView的使用
- PullToRefreshScrollView之自己创建ListVView
- PullToRefreshScrollView的使用
- PullToRefreshScrollView的使用
- PullToRefreshScrollView+HorizontalScrollView
- Android PullTorefreshScrollview回到顶部
- PullToRefreshScrollView的使用 +Banner
- PullToRefreshScrollView的使用
- PullToRefreshScrollView 添加滚动监听
- android下拉刷新scrollview的用法pullToRefreshScrollview
- pulltorefresh+viewpager fragment+HorizontalScrollView
- 使用PullToRefreshScrollView实现无线轮播和ListView同时刷新加载
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
- 当PullToRefreshScrollView里面嵌套ListView,下拉刷新时ListView主动向上滑
- 开源项目PullToRefresh详解(三)——PullToRefreshScrollView
- PullToRefreshScrollView的使用