package com.example.hl; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; 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.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; /** * 作者:刘雄彪 */ public class fragment1 extends Fragment implements XListView.IXListViewListener { private View view; private ViewPager vp; private XListView xlv; List<User> list; List<ImageView> list3; private mydata2 mydata2; private ImageView iv; List<User2> list2; private LinearLayout lll; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); int a=msg.what; if (a==0){ mydata2.notifyDataSetChanged(); close(); } if (a==1){ int i = vp.getCurrentItem() + 1; vp.setCurrentItem(i); handler.sendEmptyMessageDelayed(1, 2000); } } }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //========================第一步======================== view = inflater.inflate(R.layout.fragment1, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //=================第二步=================== xlv = (XListView) view.findViewById(R.id.lv); xlv.setPullLoadEnable(true); xlv.setPullRefreshEnable(true); xlv.setXListViewListener(this); View vvp = View.inflate(getActivity(), R.layout.vp, null);//获取我单独的fragment控件 vp = (ViewPager) vvp.findViewById(R.id.vp2); lll = (LinearLayout) vvp.findViewById(R.id.lll); xlv.addHeaderView(vvp);//添加到xlistview的头布局 //==========================第三步============================= //读取数据和解析 new Thread() { private StringBuilder builder; private URL url; @Override public void run() { super.run(); try { url = new URL("http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9 "); URLConnection connection = url.openConnection(); InputStream stream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); builder = new StringBuilder(); String tem = ""; while ((tem = reader.readLine()) != null) { builder.append(tem); } Log.e("=====读取到的数据===========", builder.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } getActivity().runOnUiThread(new Runnable() { private List<Bean.DataBean.ComicsBean> comics; @Override public void run() { //解析 list2=new ArrayList<User2>(); list=new ArrayList<User>(); Gson gson = new Gson(); Bean json = gson.fromJson(builder.toString(), Bean.class); comics = json.getData().getComics(); //展示在xlistview上面的数据源 for (int j = 0; j < comics.size(); j++) { String title = comics.get(j).getTitle(); Bean.DataBean.ComicsBean.TopicBean topic = comics.get(j).getTopic(); String cover_image_url = topic.getCover_image_url(); list2.add(new User2(title, cover_image_url));//list2===xlistview要用的集合 } //只展示三条数据 for (int i = 0; i < 3; i++) { Bean.DataBean.ComicsBean.TopicBean topic = comics.get(i).getTopic(); String cover_image_url = topic.getCover_image_url(); list.add(new User(cover_image_url));//list========无限轮播要用的集合 } Log.e("=====解析到的数据===========", list2.toString()); //========================第四步====================== //写xlistview的适配器,展示数据,记得把上拉下拉也做上,加Handler mydata2 = new mydata2(); xlv.setAdapter(mydata2); //=======================第五步============================= nodata();//动态添加无限轮播的小点 vp.setAdapter(new mydata());//无限轮播的适配器 vp.setCurrentItem(10000); handler.sendEmptyMessageDelayed(1,2000);//让它2秒展示一次 vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //设置小点和图片对应显示 for (int x = 0; x < list3.size(); x++) { if (position % list.size() == x) { //证明点和图片是对应的,应该点是变红的 list3.get(position % list.size()).setImageResource(R.drawable.dot_focus); } else { list3.get(x).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } }); } }.start(); } public void nodata(){ list3=new ArrayList<ImageView>();//list3就只放一个imagview的控件 if (list3 != null) { list3.clear(); } for (int i=0;i<list.size();i++){ iv = new ImageView(getActivity()); if (i == vp.getCurrentItem()) { iv.setImageResource(R.drawable.dot_focus); } else { iv.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams parmes = new LinearLayout.LayoutParams(20, 20); parmes.setMargins(10, 0, 10, 0); list3.add(iv); lll.addView(iv,parmes); } } class mydata extends PagerAdapter {//无限轮播的适配器 @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) { View view = View.inflate(getActivity(), R.layout.textview, null); ImageView img = (ImageView) view.findViewById(R.id.img); ImageLoader.getInstance().displayImage(list.get(position % list.size()).url, img); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } private void close() {//xlistview的关闭方法 xlv.stopLoadMore(); xlv.stopRefresh(); xlv.setRefreshTime("2017-09-16"); } class mydata2 extends BaseAdapter {//xlistview的适配器 final int type1 = 0;//多条目加载 final int type2 = 1; @Override public int getCount() { return list2.size(); } @Override public Object getItem(int i) { return list2.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); ViewHolder vh; if (view == null) { vh = new ViewHolder(); switch (type) { case 0: view = View.inflate(getActivity(), R.layout.textview, null);//第一个布局 vh.name = (TextView) view.findViewById(R.id.name); vh.img = (ImageView) view.findViewById(R.id.img); break; case 1: view = View.inflate(getActivity(), R.layout.textview2, null);//第二个布局 vh.img = (ImageView) view.findViewById(R.id.img1); vh.img2 = (ImageView) view.findViewById(R.id.img2); break; } view.setTag(vh); } else { vh = (ViewHolder) view.getTag(); } switch (type) { case 0: vh.name.setText(list2.get(i).name); ImageLoader.getInstance().displayImage(list2.get(i).imgg, vh.img);//记得把imageloder写上 break; case 1: ImageLoader.getInstance().displayImage(list2.get(i).imgg, vh.img); ImageLoader.getInstance().displayImage(list2.get(i).imgg, vh.img2); break; } return view; } class ViewHolder { TextView name; ImageView img, img2; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { //分开多条目显示 if (position % 2 == 0) { return 0; } else { return 1; } } } //================下拉刷新的方法 @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { list2.add(0,new User2("怪物恋人","http://f2.kkmh.com/image/170915/a56o0vmx8.webp-w640")); } },3000); handler.sendEmptyMessageDelayed(0,3000); } //======================上拉加载的方法 @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { list2.add(new User2("怪物恋人","http://f2.kkmh.com/image/170915/a56o0vmx8.webp-w640")); handler.sendEmptyMessage(0); } },3000); } }
无限轮播集合

最新推荐文章于 2025-04-11 00:15:00 发布