public class Main3Activity extends AppCompatActivity { private int pagerpp=1; private int pagertype=1; private ViewPager viewPager; private LinearLayout layout; private List<ReaData3.DataBean> indata; private List<ReaDataimg.DataBean> data; private List<ImageView> lists=new ArrayList<>(); private String pathimg="https://www.zhaoapi.cn/quarter/getAd?page=1"; private String path="https://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&source=android&page="+pagerpp; private Handler handler=new Handler( ){ @Override public void handleMessage(Message msg) { super.handleMessage( msg ); int cIndex=viewPager.getCurrentItem(); cIndex++; viewPager.setCurrentItem(cIndex); //改变指示器 setSelectedPoint(cIndex%lists.size()); sendEmptyMessageDelayed(0,1000); } }; private ListView listView; private PullToRefreshScrollView psv; private MyAdapter3 myAdapter; private void setSelectedPoint(int pager) { for (int i = 0; i <lists.size() ; i++) { if (i==pager){ lists.get( i ).setImageResource( R.drawable.point_selected ); }else { lists.get( i ).setImageResource( R.drawable.point_unselected ); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main3 ); indata=new ArrayList<>( ); psv = findViewById( R.id.pvss ); viewPager = findViewById( R.id.vp ); layout = findViewById( R.id.lin_point ); listView = findViewById( R.id.lv ); iniplv(); initImg(); initData(); } private void iniplv() { psv.setMode( PullToRefreshBase.Mode.BOTH ); psv.setOnRefreshListener( new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { pagertype=1; pagerpp=1; path="https://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&source=android&page="+pagerpp; initData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { pagertype=2; pagerpp++; path="https://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA&source=android&page="+pagerpp; initData(); } } ); } private void initData() { MyTask task = new MyTask(new MyTask.ICallBacks() { @Override public void getJsonData(String jsonstr) { Gson gson = new Gson(); ReaData3 reaData3 = gson.fromJson( jsonstr, ReaData3.class ); List<ReaData3.DataBean> datas = reaData3.getData(); if (pagertype==1){ indata.clear(); } indata.addAll( datas ); setAdapter(); psv.onRefreshComplete(); } } ); task.execute( path ); } private void setAdapter() { if (myAdapter == null) { myAdapter = new MyAdapter3( indata, Main3Activity.this ); listView.setAdapter( myAdapter ); }else { myAdapter.notifyDataSetChanged(); } } private void initImg() { MyTask myTask = new MyTask( new MyTask.ICallBacks() { @Override public void getJsonData(String jsonstr) { Gson gson = new Gson(); ReaDataimg reaDataimg = gson.fromJson( jsonstr, ReaDataimg.class ); data = reaDataimg.getData(); MyViewPager myViewPager = new MyViewPager(data,Main3Activity.this,handler); viewPager.setAdapter( myViewPager ); initpont(); viewPager.setCurrentItem( data.size()*10 ); handler.sendEmptyMessageDelayed( 0,1000 ); } } ); myTask.execute( pathimg ); } private void initpont() { layout.removeAllViews(); lists.clear(); for (int i = 0; i <data.size() ; i++) { ImageView imageView = new ImageView( this ); LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins( 0,0,10,0 ); if (i==0){ imageView.setImageResource( R.drawable.point_selected ); }else { imageView.setImageResource( R.drawable.point_unselected ); } layout.addView( imageView,params ); lists.add( imageView ); } } }
ListViewAdapter
public class MyAdapter3 extends BaseAdapter { List<ReaData3.DataBean> list; Context context; private final DisplayImageOptions options; public MyAdapter3(List<ReaData3.DataBean> list, Context context) { this.list = list; this.context = context; //使用内存缓存 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 )//设置图片色彩模式 1px=2个字节 ARGB_8888 1px=4个字节 ARGB_4444 1px=2个字节 ALPHA_8 1px=1个字节 .imageScaleType( ImageScaleType.EXACTLY )//设置图片的缩放模式 .build(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get( position ); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { MyHolder holder; if (convertView==null){ convertView=View.inflate( context,R.layout.main3,null ); holder= new MyHolder(); holder.textView1=convertView.findViewById( R.id.tv ); holder.textView2=convertView.findViewById( R.id.tvv ); holder.imageView=convertView.findViewById( R.id.img ); convertView.setTag( holder ); }else { holder= (MyHolder) convertView.getTag(); } holder.textView1.setText( list.get( position ).getTitle() ); holder.textView2.setText( "¥:"+(float)list.get( position ).getPrice()+"0"); ImageLoader.getInstance().displayImage(list.get( position ).getImages().split( "\\|" )[0],holder.imageView,options ); return convertView; } class MyHolder{ ImageView imageView; TextView textView1,textView2; } }
MyVpAdapter
public class MyViewPager extends PagerAdapter { List<ReaDataimg.DataBean> data; Context context; Handler handler; private final DisplayImageOptions options; public MyViewPager(List<ReaDataimg.DataBean> data, Context context, Handler handler) { this.data = data; this.context = context; this.handler = handler; 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 )//设置图片色彩模式 1px=2个字节 ARGB_8888 1px=4个字节 ARGB_4444 1px=2个字节 ALPHA_8 1px=1个字节 .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, final int position) { ImageView imageView = new ImageView( context ); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(data.get(position%data.size()).getIcon(),imageView,options); imageView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(context,data.get(position%data.size()).getTitle(), Toast.LENGTH_SHORT).show(); } } ); imageView.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: handler.removeCallbacksAndMessages( null ); break; case MotionEvent.ACTION_MOVE: handler.removeCallbacksAndMessages( null ); break; case MotionEvent.ACTION_UP: handler.sendEmptyMessageDelayed( 0,1000 ); break; case MotionEvent.ACTION_CANCEL: handler.sendEmptyMessageDelayed( 0,1000 ); break; } return false; } } ); container.addView( imageView ); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView( (View) object ); } }
public class MyListView extends ListView { public MyListView(Context context) { super( context ); } public MyListView(Context context, AttributeSet attrs) { super( context, attrs ); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int i = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST ); super.onMeasure( widthMeasureSpec, i ); } }