Viewpager+Fragment+Xlistview
来源:互联网 发布:宁波傲强自动编程软件 编辑:程序博客网 时间:2024/06/06 07:59
=============================activity===主要是fragment===================================
package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.os.Bundle;import android.support.annotation.IdRes;import android.support.v7.app.AppCompatActivity;import android.widget.FrameLayout;import android.widget.RadioGroup;public class MainActivity extends AppCompatActivity { private FrameLayout framelayout; private RadioGroup radiogroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); framelayout = (FrameLayout) findViewById(R.id.framelayout); radiogroup = (RadioGroup) findViewById(R.id.radiogroup); getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_01()).commit(); radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { switch (i){ case R.id.btn01: getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_01()).commit(); break; case R.id.btn02: getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_02()).commit(); break; case R.id.btn03: getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_03()).commit(); break; case R.id.btn04: getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new Fragment_04()).commit(); break; default: break; } } }); }}===================Fragmrnt_01====viewpager和xlistview的主要操作==================
package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.os.AsyncTask;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.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;/** * Created by Lenovo on 2017/10/23. */public class Fragment_01 extends Fragment implements XListView.IXListViewListener { private List<DataDataBean.DataBean> list = new ArrayList<>(); private ListviewAdapter listviewAdapter; //定义一个int值记录第几页 private int page_num = 1; private ViewPager viewpager; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0){ //viewPager显示下一页 viewpager.setCurrentItem(viewpager.getCurrentItem() +1); //再次发送延时消息 handler.sendEmptyMessageDelayed(0,2000); } } }; private XListView xlistview; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment01_layout, container, false); viewpager = view.findViewById(R.id.viewpager); xlistview = view.findViewById(R.id.Xlistview); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getDataFromNet(); xlistview.setPullRefreshEnable(true);//支持下拉刷新 xlistview.setPullLoadEnable(true);//支持上拉加载更多 xlistview.setXListViewListener(this); getDataFromNet2(); } //xlistview private void getDataFromNet2() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); //将解析到的集合数据添加到上面的大集合中 list.addAll(dataDataBean.getData()); //设置适配器... setAdapter(); //上拉加载完成....停止加载 xlistview.stopLoadMore(); } }; asyncTask.execute(); } private void setAdapter() { if (listviewAdapter == null){ listviewAdapter = new ListviewAdapter(getActivity(), list); xlistview.setAdapter(listviewAdapter); }else { listviewAdapter.notifyDataSetChanged(); } } //viewpager private void getDataFromNet() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=5&page=1"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { //打印以下数据看看是否获取到 Log.i("----", s); if (s != null) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); List<DataDataBean.DataBean> list = dataDataBean.getData(); //给viewPager设置适配器 MyAdapter myAdapter = new MyAdapter(getActivity(), list, handler); //设置适配器 viewpager.setAdapter(myAdapter); //2.手动的可以无限滑动 viewpager.setCurrentItem(list.size() * 100000);//设置当前展示中间某个足够大的位置 handler.sendEmptyMessageDelayed(0, 2000);//发送一个延时的空消息 } } }; asyncTask.execute(); } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } //监听 @Override public void onRefresh() { page_num ++; AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+page_num; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置 connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //获取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); //下拉刷新的数据需要添加在大集合的最前边 list.addAll(0,dataDataBean.getData()); //设置适配器... setAdapter(); //...............设置完数据之后刷新需要停止 xlistview.stopRefresh();//停止刷新 //System.currentTimeMillis()....当前时间的long类型的值 Date date = new Date(System.currentTimeMillis()); //格式化....yyyy-MM-dd HH:mm SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); //设置本次刷新的时间 xlistview.setRefreshTime(simpleDateFormat.format(date)); } }; asyncTask.execute(); } @Override public void onLoadMore() { getDataFromNet2(); }}=======================listviewadapter=======xlistview的adapter=============================================
package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by Lenovo on 2017/10/23. */class ListviewAdapter extends BaseAdapter{ Context context; List<DataDataBean.DataBean> list; public ListviewAdapter(Context context, List<DataDataBean.DataBean> list) { this.context=context; this.list=list; } @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) { ViewHolder holder; if (view == null){ view = View.inflate(context,R.layout.item_layout,null); holder = new ViewHolder(); holder.textview = view.findViewById(R.id.textview); holder.imageview = view.findViewById(R.id.imageview); view.setTag(holder); }else { holder = (ViewHolder) view.getTag(); } holder.textview.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getUserImg(),holder.imageview,ImageLoaderUtil.getDefaultOption()); return view; } private class ViewHolder{ ImageView imageview; TextView textview; }}==========================MyAdapter===viewpager的Adapter================================================
package wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023;import android.content.Context;import android.os.Handler;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/** * Created by Lenovo on 2017/10/23. */public class MyAdapter extends PagerAdapter{ Context context; List<DataDataBean.DataBean> list; Handler handler; public MyAdapter(Context context, List<DataDataBean.DataBean> list, Handler handler) { this.context=context; this.list=list; this.handler=handler; } @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) { //1.把这个当前展示的视图添加到容器中...container ImageView imageView = new ImageView(context); //..........使图片平铺整个imageView控件 imageView.setScaleType(ImageView.ScaleType.FIT_XY); //imageLoader加载图片到这个imageView控件上 ImageLoader.getInstance().displayImage(list.get(position %list.size()).getUserImg(),imageView,ImageLoaderUtil.getDefaultOption()); container.addView(imageView);//添加到容器 //2.把当前展示的视图返回 return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}==========================activity_main====framelayout加radiogroup==============================================================
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.MainActivity"> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="11" android:id="@+id/framelayout"> </FrameLayout> <RadioGroup android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/radiogroup" android:orientation="horizontal" > <RadioButton android:id="@+id/btn01" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="首页" android:button="@null" android:gravity="center" /> <RadioButton android:id="@+id/btn02" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="发现" android:button="@null" android:gravity="center" /> <RadioButton android:id="@+id/btn03" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="下载" android:button="@null" android:gravity="center" /> <RadioButton android:id="@+id/btn04" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:text="我的" android:button="@null" android:gravity="center" /> </RadioGroup></LinearLayout>===================fragment01========viewpager加xlistview==========================================================
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/viewpager"> </android.support.v4.view.ViewPager> <wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.XListView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="2" android:id="@+id/Xlistview"> </wangaimin.bwie.com.example.lenovo.wangaimin_2017_1023.XListView></LinearLayout>=====================item_layout====xlistview的条目视图===============================================
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/imageview" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:text="kkkk" /></LinearLayout>
效果图如下:
阅读全文
0 0
- Viewpager+Fragment+Xlistview
- fragment+Xlistview+viewpager无限轮播+imageloader
- XListView+ViewPager
- Android_侧滑/横向滚动/XlistView上下/ViewPager-fragment/头布局/
- 网络判断+Fragment+ViewPager+XListView+TabLayout横向滑动菜单 Z2
- 侧拉+xlistview+Fragment+Viewpager+判断网络状态
- xListView+Fragment
- ViewPager+Fragment(延时加载)+XListView(下拉刷新)+ViewPager(自动循环)嵌套
- Viewpager+XListView+Internet
- ViewPager,XListView主Activity
- XListView+ViewPager+SQLite
- XListView+ PullToRefreshListView+ViewPager
- viewpager 与 Xlistview
- 网络数据请求展示为无限轮播图 ViewPager+XListView+Fragment+ImageLoader
- 综合:PullToRefresh+XlistView+TabLayout+DrawerLayout+ViewPager+Fragment+ImageLoader+延时跳转+Shared
- VIewPager+XListView+RadioButton实现布局
- ViewPager无限轮播加XListview加载
- XListView+ViewPager+上拉下拉
- makefile的写法
- 关于DOM中元素位置、大小的API
- 特斯拉将在上海独资建厂 新一代无人机用意念控制飞行
- 硬创先锋 | 傅盛All-in的这家AI公司 过去一年究竟做了什么?
- 项目实战-仿bilibili刷新按钮的实现
- Viewpager+Fragment+Xlistview
- bzoj1051
- tornado框架SQLAlchemy的操作
- 悬空指针
- @Autowired与@Resource的区别
- 多次fork问题(python 版)
- 2735: 杨辉三角形
- 五花八门的main()
- Codeforces Round #442 (Div. 2) A B