首先要在build.gradle文件中添加库
compile 'com.github.userswlwork:pull-to-refresh:1.0.0' compile 'com.youth.banner:banner:1.4.10'然后写布局文件
<?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:id="@+id/pull_scroll" android:layout_width="fill_parent" android:layout_height="match_parent" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.youth.banner.Banner android:id="@+id/mybanner" android:layout_width="match_parent" android:layout_height="200dp"></com.youth.banner.Banner> <com.example.zhanhaoxuan.pulltorefresh_banner.MyListView android:id="@+id/pull_list" android:layout_width="match_parent" android:layout_height="match_parent"></com.example.zhanhaoxuan.pulltorefresh_banner.MyListView> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView>接下来是编写+++++++++++++++++++++++++MainActivity.java++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++自定义的ListView+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class MyListView extends ListView{ public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int newheight= MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, newheight); } }
public class MainActivity extends AppCompatActivity { private PullToRefreshScrollView pull_scroll; private Banner mybanner; private ListView pull_list; private String urlPart="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="; private int pageIndex=1; private String url=urlPart+pageIndex; private ArrayList<String> list1; private List<Result.NewslistBean> datas=new ArrayList<>(); private Myadapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 pull_scroll = findViewById(R.id.pull_scroll); mybanner = findViewById(R.id.mybanner); pull_list = findViewById(R.id.pull_list); //初始化 initpsv(); //请求网络数据,展示轮播图 MyNetTask myNetTask=new MyNetTask(new MyNetTask.IcallBack() { @Override public void getJsonData(String jsonStr) { list1 = new ArrayList<>(); Gson gson=new Gson(); Result2 result = gson.fromJson(jsonStr, Result2.class); List<Result2.DataScrollBean> dataScroll = result.getDataScroll(); for (int i = 0; i <dataScroll.size() ; i++) { String picUrl = "http://www.93.gov.cn"+dataScroll.get(i).getIMAGEURL(); list1.add(picUrl); } setBanner(); } }); myNetTask.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) { Toast.makeText(MainActivity.this,jsonStr,Toast.LENGTH_SHORT).show(); Gson gson=new Gson(); Result result1 = gson.fromJson(jsonStr, Result.class); datas.addAll(result1.getNewslist()); setAdapter(); } }); task1.execute(url); } private void setAdapter() { if (adapter==null){ adapter = new Myadapter(this,datas); pull_list.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } } private void setBanner() { //设置图片加载器 mybanner.setImageLoader(new MyBannerLoader()); //设置图片集合 mybanner.setImages(list1); //启动 mybanner.start(); } private void initpsv() { //设置模式 pull_scroll.setMode(PullToRefreshBase.Mode.BOTH); //设置头尾部局的文字 ILoadingLayout headerLayout = pull_scroll.getLoadingLayoutProxy(true, false); headerLayout.setPullLabel("下拉刷新"); headerLayout.setReleaseLabel("放开刷新"); headerLayout.setRefreshingLabel("正在刷新。。。。"); ILoadingLayout footerLayout = pull_scroll.getLoadingLayoutProxy(false, true); footerLayout.setPullLabel("上拉加载"); footerLayout.setReleaseLabel("放开加载"); footerLayout.setRefreshingLabel("正在加载。。。。"); //设置回调接口 pull_scroll.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(); Result result1 = gson.fromJson(jsonStr, Result.class); //清空 datas.clear(); //添加新数据到集合中 datas.addAll(result1.getNewslist()); setAdapter(); //关闭头尾布局 pull_scroll.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(String jsonStr) { Gson gson=new Gson(); Result result1 = gson.fromJson(jsonStr, Result.class); //添加新数据到集合中 datas.addAll(result1.getNewslist()); setAdapter(); //关闭头尾布局 pull_scroll.onRefreshComplete(); } }); task1.execute(url); } }); } }