viewpager+fragment
来源:互联网 发布:景观大数据的课程如何 编辑:程序博客网 时间:2024/06/05 02:27
//主界面public class MainActivity extends AppCompatActivity { //定义全局变量 private ViewPager vp; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化组件 vp= (ViewPager) findViewById(R.id.vp); rg= (RadioGroup) findViewById(R.id.rg); rb1= (RadioButton) findViewById(R.id.rb1); rb2= (RadioButton) findViewById(R.id.rb2); rb3= (RadioButton) findViewById(R.id.rb3); rb4= (RadioButton) findViewById(R.id.rb4); //设置radiobutton的默认值 rb1.setChecked(true); //根据radiobutton的选中状态来对viewpager进行设置 rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.rb1: vp.setCurrentItem(0); break; case R.id.rb2: vp.setCurrentItem(1); break; case R.id.rb3: vp.setCurrentItem(2); break; case R.id.rb4: vp.setCurrentItem(3); break; } } }); //给viewpager设置适配器 vp.setAdapter(new MyFrAdapter(getSupportFragmentManager())); //根据viewpager的状态来选中radiobutton vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position){ case 0: rb1.setChecked(true); break; case 1: rb2.setChecked(true); break; case 2: rb3.setChecked(true); break; case 3: rb4.setChecked(true); break; } } @Override public void onPageScrollStateChanged(int state) { } }); } //定义viewpager的Fragment适配器 class MyFrAdapter extends FragmentPagerAdapter{ public MyFrAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment=null; switch (position){ case 0: fragment=new Frag01(); break; case 1: fragment=new Frag02(); break; case 2: fragment=new Frag03(); break; case 3: fragment=new Frag04(); break; } return fragment; } @Override public int getCount() { return 4; } }}
fragment数据页面
** * Created by admin on 2017/08/25/025. */public class Frag01 extends Fragment implements XListView.IXListViewListener { //定义全局变量 private ViewPager vp; private XListView xlv; private LinearLayout ll; private List<Integer> ivlist; private List<ImageView> dotlist; private List<Bean.DataBean.ComicsBean> list; private ImageView dot; private MyAdapter adapter; //定义handler private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int n=msg.what; switch (n){ case 0: int i=vp.getCurrentItem(); i++; vp.setCurrentItem(i); sendmsg(); break; case 1: adapter.notifyDataSetChanged(); close(); } } }; private ByteArrayOutputStream baos; private String str; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.frag01,null); //初始化集合 ivlist=new ArrayList<>(); list=new ArrayList<>(); //在无限轮播用的集合里添加图片 ivlist.add(R.drawable.e0); ivlist.add(R.drawable.e1); ivlist.add(R.drawable.e2); //初始化组件 vp= (ViewPager) view.findViewById(R.id.fr_vp); xlv= (XListView) view.findViewById(R.id.xlv); ll= (LinearLayout) view.findViewById(R.id.ll); //使xlistview支持下拉刷新和上拉加载 xlv.setPullRefreshEnable(true); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); //给viewpager添加适配器 vp.setAdapter(new MyViewAdapter()); //定义viewpager的初始值 vp.setCurrentItem(10000); //初始化点 indot(); //自动轮播 sendmsg(); //点随着viewpager的播放而改变 viewLinstener(); //定义一个线程来请求网络数据 new Thread(){ @Override public void run() { //定义接口 String path="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"; try { //开始请求数据 URL url=new URL(path); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setDoInput(true); connection.setConnectTimeout(3000); connection.setReadTimeout(3000); int code=connection.getResponseCode(); //请求成功后读取数据 if(code==200){ InputStream is=connection.getInputStream(); baos=new ByteArrayOutputStream(); byte[]buffer=new byte[1024]; int len=-1; while((len=is.read(buffer))!=-1){ baos.write(buffer,0,len); } str=baos.toString(); } } catch (Exception e) { e.printStackTrace(); } //在子线程里解析json串 getActivity().runOnUiThread(new Runnable() { @Override public void run() { Gson gson=new Gson(); //解析 Bean bean=gson.fromJson(str,Bean.class); list=bean.getData().getComics(); //实例化适配器 adapter=new MyAdapter(list,getActivity()); //显示在xlistView上 xlv.setAdapter(adapter); } }); } }.start(); return view; } //点的动态变化方法 private void viewLinstener(){ 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<dotlist.size();i++){ if(position%ivlist.size()==i){ dotlist.get(position%ivlist.size()).setImageResource(R.drawable.dot_focuable); }else{ dotlist.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } //初始化点 private void indot(){ dotlist=new ArrayList<>(); if(dotlist!=null){ dotlist.clear(); } for(int i=0;i<ivlist.size();i++){ dot=new ImageView(getActivity()); if(i==0){ dot.setImageResource(R.drawable.dot_focuable); }else{ dot.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20); params.setMargins(10,0,10,0); ll.addView(dot,params); dotlist.add(dot); } } //自动轮播 private void sendmsg(){ handler.sendEmptyMessageDelayed(0,3000); } //关闭刷新和加载方法 private void close(){ xlv.stopLoadMore(); xlv.stopRefresh(); } //下拉刷新 @Override public void onRefresh() { list.addAll(0,list); handler.sendEmptyMessageDelayed(1,2000); } //上拉加载 @Override public void onLoadMore() { list.addAll(list); handler.sendEmptyMessageDelayed(1,2000); } //viewpager的适配器 class MyViewAdapter 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) { ImageView iv=new ImageView(getActivity()); iv.setImageResource(ivlist.get(position%ivlist.size())); container.addView(iv); return iv; } //删除图片 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }}适配器::/** * Created by admin on 2017/08/25/025. * xlistView 的适配器实现多条目加载 */public class MyAdapter extends BaseAdapter{ //定义全局变量 private List<Bean.DataBean.ComicsBean> list; private Context context; private LayoutInflater inflater; //定义构造器 public MyAdapter(List<Bean.DataBean.ComicsBean> list,Context context){ this.list=list; this.context=context; inflater=LayoutInflater.from(context); } @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 int getViewTypeCount() { return 2; } //判断怎样分辨每个条目的位置 @Override public int getItemViewType(int position) { if(position%2==0){ return 0; }else{ return 1; } } //获取布局 @Override public View getView(int position, View convertView, ViewGroup parent) { //获取条目类型 int type=getItemViewType(position); //优化 ViewHolder1 holder1=null; //进行多条目的判断 switch (type){ //如果为0,则是第一种布局 case 0: if(convertView==null){ convertView=inflater.inflate(R.layout.item_01,null); holder1=new ViewHolder1(); holder1.iv= (ImageView) convertView.findViewById(R.id.iv_01); holder1.tv= (TextView) convertView.findViewById(R.id.tv_01); convertView.setTag(holder1); }else{ holder1= (ViewHolder1) convertView.getTag(); } holder1.tv.setText(list.get(position).getTitle()); ImageLoader.getInstance().displayImage(list.get(position).getCover_image_url(),holder1.iv); break; //如果为1,则是第二种布局 case 1: if(convertView==null){ convertView=inflater.inflate(R.layout.item_02,null); holder1=new ViewHolder1(); holder1.iv= (ImageView) convertView.findViewById(R.id.iv_02); holder1.tv= (TextView) convertView.findViewById(R.id.tv_02); convertView.setTag(holder1); }else{ holder1= (ViewHolder1) convertView.getTag(); } holder1.tv.setText(list.get(position).getTitle()); ImageLoader.getInstance().displayImage(list.get(position).getCover_image_url(),holder1.iv); break; } return convertView; } //用于优化xlistView class ViewHolder1{ ImageView iv; TextView tv; }}
阅读全文
0 0
- Fragment+ViewPager
- Viewpager&Fragment
- viewpager + fragment
- viewpager+fragment
- viewpager+fragment
- ViewPager+Fragment
- viewPager+fragment
- ViewPager+Fragment
- ViewPager+Fragment
- viewpager+fragment
- Fragment+ViewPager
- ViewPager+Fragment
- Fragment+ViewPager
- viewpager fragment
- Fragment+ViewPager
- viewpager +Fragment
- viewpager+fragment
- Viewpager+fragment
- 小码哥Java培训只教符合企业需要的人才
- res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)
- Java常用jar包用途详解
- TI-CC2640R2-程序复位API
- dubbo 服务启动不起来
- viewpager+fragment
- 程序是什么?
- contiki之nbr_table.c
- UE4学习笔记17th:绑定Pawn和Components
- Android图片适应屏幕大小
- ios 自定义UiTableViewCell
- DBCP迁移到Druid
- js创建对象的几种方法
- 欢迎使用CSDN-markdown编辑器