XLView内镶嵌viewpager无限轮播 AND 多条目
2017-09-17 19:36
239 查看
package com.bwie.skn.zhoukao03_1; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bawei.wzq.wzlibrary.utils.NetWorkUtil; import com.bawei.wzq.wzlibrary.view.XListView; import com.bawei.wzq.wzlibrary.view.XListView.IXListViewListener; import com.bwie.skn.zhoukao03_1.bean.JsonBean; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements IXListViewListener{ private XListView xlv; private List<JsonBean.DataBean.AdlistBean> list = new ArrayList<>(); private MyXLAdapter myXLAdapter; private View headerView; private ViewPager vp; private LinearLayout ll; private List<ImageView> ivList = new ArrayList<>(); private MyVPAdapter myVPAdapter; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int i = vp.getCurrentItem(); i++; vp.setCurrentItem(i); sendEmptyMessageDelayed(0,2000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化数据 headerView = View.inflate(MainActivity.this,R.layout.xl_item0_layout,null); initView(); xlv.addHeaderView(headerView); //适配 myXLAdapter = new MyXLAdapter(); xlv.setAdapter(myXLAdapter); myVPAdapter = new MyVPAdapter(); //网络获取数据 initData(); } private void initData() { new MyAsyncTaskString().execute("http://www.meirixue.com/api.php?c=index&a=index"); } //网络获取数据 class MyAsyncTaskString extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { String s = new NetWorkUtil().getNetString(strings[0]); return s; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); JsonBean jsonBean = gson.fromJson(s, JsonBean.class); List<JsonBean.DataBean.AdlistBean> adlist = jsonBean.getData().getAdlist(); list.addAll(adlist); myXLAdapter.notifyDataSetChanged(); vp.setAdapter(myVPAdapter); //初始化点 initDot(); vp.setCurrentItem(1000*list.size()); handler.sendEmptyMessageDelayed(0,2000); ViewPagerListener(); } } //VP监听 private void ViewPagerListener() { vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for(int i =0;i<ivList.size();i++){ if(position%list.size()==i){ ivList.get(position%list.size()).setImageResource(R.drawable.dot_focuable); }else{ ivList.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } //初始化 private void initDot() { if(ivList!=null){ ivList.clear(); } for(int x =0;x<list.size();x++){ ImageView imageView = new ImageView(MainActivity.this); if(x==0){ imageView.setImageResource(R.drawable.dot_focuable); }else{ imageView.setImageResource(R.drawable.dot_normal); } ivList.add(imageView); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.setMargins(10,0,10,0); ll.addView(imageView,params); } } //适配器 class MyXLAdapter extends BaseAdapter{ @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); ViewHordel1 vh1; ViewHordel2 vh2; switch(type){ case 0: if(view == null){ vh1 = new ViewHordel1(); view = View.inflate(MainActivity.this, R.layout.xl_item1_layout,null); vh1.image1= (ImageView) view.findViewById(R.id.image1); vh1.tv = (TextView) view.findViewById(R.id.tv); view.setTag(vh1); }else{ vh1 = (ViewHordel1) view.getTag(); } ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh1.image1); vh1.tv.setText(list.get(i).getTitle()); break; case 1: if(view == null){ vh2 = new ViewHordel2(); view = View.inflate(MainActivity.this, R.layout.xl_item2_layout,null); vh2.image1= (ImageView) view.findViewById(R.id.image1); vh2.image2=(ImageView) view.findViewById(R.id.image2); vh2.tv = (TextView) view.findViewById(R.id.tv); view.setTag(vh2); }else{ vh2 = (ViewHordel2) view.getTag(); } ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh2.image1); ImageLoader.getInstance().displayImage(list.get(i).getImg(),vh2.image2); vh2.tv.setText(list.get(i).getTitle()); break; } return view; } @Override public int getItemViewType(int position) { if(position%2==0){ return 0; }else{ return 1; } } @Override public int getViewTypeCount() { return 2; } } class ViewHordel1{ ImageView image1; TextView tv; } class ViewHordel2{ ImageView image1; TextView tv; ImageView image2; } class ViewHordel0{ ViewPager vp; LinearLayout ll; } private void initView() { xlv = (XListView) findViewById(R.id.xlv); vp =(ViewPager) headerView.findViewById(R.id.vp); ll = (LinearLayout) headerView.findViewById(R.id.ll); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); } public void onLoad(){ xlv.stopRefresh(); xlv.stopLoadMore(); xlv.setRefreshTime("刚刚"); } /** * 下拉刷新 */ @Override public void onRefresh() { list.clear(); initData(); ll.removeAllViews(); onLoad(); } /** * 上拉加载 */ @Override public void onLoadMore() { ivList.clear(); initData(); onLoad(); } class MyVPAdapter extends PagerAdapter{ @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(MainActivity.this); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(list.get(position%list.size()).getImg(),imageView); container.addView(imageView); return imageView; } } }
相关文章推荐
- viewpager+handler获取网络数据无限自动轮播,xlistview添加头部viewpager,点击条目跳转百度
- XLisetView+ViewPager无限轮播+多条目加载
- ViewPager:真正实现图片的无限轮播、自定义指示点和条目点击事件(支持长按暂停滚动)
- pullToRefresh+网络监听+多条目+ViewPager无限轮播
- android自定义控件-AutoScrollViewpager(无限滚动轮播控件)
- Android无限广告轮播 - ViewPager源码分析
- android无限轮播banner图片--viewpager
- ViewPager网络加载图片并无限轮播实现
- 基于MVP模式下的无限轮播ViewPager
- ViewPager无限轮播(网络图片
- Android ViewPager+Handler实现无限轮播和监听处理事件时轮播速度越来越快的问题解决
- Android ViewPager从网络获取图片实现无限轮播
- viewpager无限轮播、加小圆点
- ViewPager小圆点无限轮播
- viewpager+handler无限轮播
- ViewPager无限轮播与自动轮播简单demo
- viewpager无限轮播加点
- ViewPager无限轮播(真正的左右无限滑动)
- viewpager+Handler自动无限轮播
- viewpager +小圆点 +无限轮播图