<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:ptr="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.monikaoshi.MainViewListView"> <com.handmark.pulltorefresh.library.PullToRefreshScrollView android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" android:id="@+id/psl"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/viewpagers"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linout" android:orientation="horizontal" android:gravity="center" android:layout_gravity="bottom" android:layout_marginTop="130dp" android:layout_width="match_parent" android:layout_height="wrap_content"></LinearLayout> </FrameLayout> <com.example.monikaoshi.MyListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/myListView"></com.example.monikaoshi.MyListView> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView> </RelativeLayout> ----------------------------------------------------------------------------------------------------------- import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainViewListView extends AppCompatActivity { private PullToRefreshScrollView psl; private ViewPager viewPager; private MyListView myListView; //创建集合用于存储viewPager数据 private List<MyBean_ViewPager> listBean = new ArrayList<>(); private List<ImageView> listImg = new ArrayList<>(); private int pageIndex = 1; private int clickType = 1; private String myUrl = "http://api.tianapi.com/keji/?key=55acaf346503d8d5f98af8dec90ceb01&num=10&page="+pageIndex; private List<MyGson_MyList.NewslistBean> newslists = new ArrayList<>(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //获取当前页面的下标 int currentItem = viewPager.getCurrentItem(); currentItem++; viewPager.setCurrentItem(currentItem); setYuanDian(currentItem%listBean.size()); //再次发送消息 sendEmptyMessageDelayed(1,1000); } }; private MyMListViewBase mbase; private LinearLayout linearLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_view_list_view); //初始化资源控件 initView(); //请求轮播图的数据数据 requestDataViewPager(); //初始化psl initPsl(); //请求MyListViwe的数据 requestDataListView(); } private void requestDataListView() { //调用请求网络数据的工具类 RequestDataUtil dataUtil = new RequestDataUtil(new RequestDataUtil.IcallBack() { @Override public void getJson(String jsonData) { //解析数据 Gson gson = new Gson(); MyGson_MyList myGson_myList = gson.fromJson(jsonData, MyGson_MyList.class); List<MyGson_MyList.NewslistBean> newslist = myGson_myList.getNewslist(); if(clickType == 1){ newslists.clear(); } newslists.addAll(newslist); //设置适配器 setAdapters(); psl.onRefreshComplete();//关闭上拉加载 下拉刷新 } }); //这一步不能忘 dataUtil.execute(myUrl); } //设置适配器 private void setAdapters() { if (mbase == null) { mbase = new MyMListViewBase(MainViewListView.this,newslists); myListView.setAdapter(mbase); } else { mbase.notifyDataSetChanged();//刷新适配器 } } //初始化psl private void initPsl() { psl.setMode(PullToRefreshBase.Mode.BOTH); psl.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { Toast.makeText(MainViewListView.this, "下拉刷新了", Toast.LENGTH_SHORT).show(); //下拉刷新 pageIndex = 1; clickType = 1; myUrl = "http://api.tianapi.com/keji/?key=55acaf346503d8d5f98af8dec90ceb01&num=10&page="+pageIndex; //请求MyListViwe的数据 requestDataListView(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { //上拉加载跟多 pageIndex++; clickType = 2; myUrl = "http://api.tianapi.com/keji/?key=55acaf346503d8d5f98af8dec90ceb01&num=10&page="+pageIndex; //请求MyListViwe的数据 requestDataListView(); } }); } //设置viewPager适配器 private void setShiPeiQi() { MyViewPagerBase base = new MyViewPagerBase(MainViewListView.this,listBean); viewPager.setAdapter(base); //默认显示的页面 viewPager.setCurrentItem(listBean.size()*10); //延迟发送消息 设置无线轮播 handler.sendEmptyMessageDelayed(1,1000); viewPager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { switch (motionEvent.getAction()){ case MotionEvent.ACTION_DOWN: //手指按下事件 int currentItem = viewPager.getCurrentItem(); String content = listBean.get(currentItem%listBean.size()).getTitles(); Toast.makeText(MainViewListView.this, ""+content, Toast.LENGTH_SHORT).show(); handler.removeMessages(1); break; case MotionEvent.ACTION_MOVE: handler.removeMessages(1); break; case MotionEvent.ACTION_UP: handler.sendEmptyMessageDelayed(1,1000); break; case MotionEvent.ACTION_CANCEL: handler.sendEmptyMessageDelayed(1,1000); break; } return false; } }); } //请求轮播图数据 private void requestDataViewPager() { RequestDataUtil dataUtil = new RequestDataUtil(new RequestDataUtil.IcallBack() { @Override public void getJson(String jsonData) { Gson gson = new Gson(); MyGson_ViewPager myGson_viewPager = gson.fromJson(jsonData, MyGson_ViewPager.class); List<MyGson_ViewPager.DataBean> data = myGson_viewPager.getData(); //获取图片地址 for (int i = 0; i < data.size(); i++) { listBean.add(new MyBean_ViewPager(data.get(i).getIcon(),data.get(i).getTitle())); } //动态添加小圆点指示器 for (int i = 0; i < listBean.size(); i++) { ImageView imageView = new ImageView(MainViewListView.this); if(i == 0){ imageView.setImageResource(R.drawable.del_bj); }else { imageView.setImageResource(R.drawable.edit_bj); } linearLayout.addView(imageView);//将控件添加到站位布局中 listImg.add(imageView);//将控件添加到集合当中 } //设置适配器 setShiPeiQi(); } }); dataUtil.execute("https://www.zhaoapi.cn/quarter/getAd"); } //初始化控件 private void initView() { psl = findViewById(R.id.psl); viewPager = findViewById(R.id.viewpagers); myListView = findViewById(R.id.myListView); linearLayout = findViewById(R.id.linout); } //设置小圆点 private void setYuanDian(int index){ for (int i = 0; i < listImg.size(); i++) { if(index == i){ listImg.get(i).setImageResource(R.drawable.del_bj); }else { listImg.get(i).setImageResource(R.drawable.edit_bj); } } } } -------------------------------------------------------------------------------------------------
轮播图适配器 import java.util.List; /** * Created by John on 2018/5/3 0003. */ public class MyBase_LunBo extends PagerAdapter { private Context context; private List<LunBoData> lunBoData; private final DisplayImageOptions options; public MyBase_LunBo(Context context, List<LunBoData> lunBoData) { this.context = context; this.lunBoData = lunBoData; options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时 .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .build(); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(context); //下载图片 ImageLoader.getInstance().displayImage(lunBoData.get(position%lunBoData.size()).getUrl(),imageView,options); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }