MainActivity
package news1510a.bawei.com.a16_pulltorefresh_demo;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.util.ArrayList;import java.util.List;import news1510a.bawei.com.a16_pulltorefresh_demo.fragment.FragmentGridView;import news1510a.bawei.com.a16_pulltorefresh_demo.fragment.FragmentListView;import news1510a.bawei.com.a16_pulltorefresh_demo.fragment.FragmentScrollView;/** * 使用pullToRefresh进行下拉刷新和上拉加载 * 1.去github上下载压缩包,解压出来,把library复制出来改名,路径最好不要有中文 * 2.使用import moundle导进这个库文件,添加库文件的依赖 * 3.此时左下角可能会报错,只需要点击install...去下载16版本的sdk,还需要下载19版本的buildTools * * 查看代码可以看到 * PullToRefreshListView可以刷新的listView控件....间接继承了LinearLayout,是一个自定义的listView * PullToRefreshGridView可以刷新的GridView控件 * PullToRefreshExpandableListView可以刷新的二级列表控件 * PullToRefreshScrollView可以刷新的ScrollView控件 * PullToRefreshWebView可以刷新的WebView控件 */public class MainActivity extends AppCompatActivity { private TabLayout tabLayout; private ViewPager viewPager; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tabLayout = (TabLayout) findViewById(R.id.tl_tab); viewPager = (ViewPager) findViewById(R.id.view_pager); list = new ArrayList<>(); list.add("ListView"); list.add("GridView"); list.add("ScrollView"); viewPager.setOffscreenPageLimit(list.size()); //1.设置适配器...fragmnePagerAdapter....getChildFragmentManager...getFragmentManager viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { //2.重写方法...返回的是viewPager当前页的标题 @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) {//0...listView,1...gridView,2..scrollView Fragment fragment = null; switch (position){ case 0: fragment = new FragmentListView(); break; case 1: fragment = new FragmentGridView(); break; case 2: fragment = new FragmentScrollView(); break; default: break; } return fragment; } @Override public int getCount() { return list.size(); } }); //3.tablayout与viewPager关联使用 tabLayout.setupWithViewPager(viewPager); }}
————————————————————————————————————————————————————
activity_main.xml
————————————————————————————————————————————————————<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:id="@+id/tl_tab" android:layout_width="match_parent" android:layout_height="40dp" app:tabGravity="center" app:tabIndicatorColor="@color/colorAccent" app:tabMode="scrollable" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="@color/colorPrimary" /> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>——————————————————————————————————————————FragmentListView
——————————————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import news1510a.bawei.com.a16_pulltorefresh_demo.R; import news1510a.bawei.com.a16_pulltorefresh_demo.adapter.ListViewAdapter; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.DataDataBean; import news1510a.bawei.com.a16_pulltorefresh_demo.dao.JsonDao; import news1510a.bawei.com.a16_pulltorefresh_demo.inter.JsonCallBack; import news1510a.bawei.com.a16_pulltorefresh_demo.util.NetDataUtil; /** * @author Dash * @date 2017/10/18 * @description: */ public class FragmentListView extends Fragment { private PullToRefreshListView refreshListView; private List<DataDataBean.ResultsBean> list = new ArrayList<>();//记录当前展示的所有数据 private ListViewAdapter listViewAdapter; private int page_num = 1; private ILoadingLayout startLabels; private JsonDao jsonDao; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_listview_layout,container,false); refreshListView = view.findViewById(R.id.refresh_list_view); return view; } /** * 使用数据库做一个数据的缓存 * @param savedInstanceState */ @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); jsonDao = new JsonDao(getContext()); //1.先读取数据库中存的数据....有数据,解析展示....无数据,网络获取数据 String json = jsonDao.getJson("http://gank.io/api/data/Android/10/" + page_num); if (json != null){ //解析 显示 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); }else { //1.设置listView的适配器 getDataFromNet(); } //2.设置刷新模式 /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */ refreshListView.setMode(PullToRefreshBase.Mode.BOTH); //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字) //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false startLabels = refreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //4.设置监听事件 /** * 如果Mode设置成Mode.BOTH,需要设置刷新Listener为OnRefreshListener2,并实现onPullDownToRefresh()、 * onPullUpToRefresh()两个方法。 如果Mode设置成Mode.PULL_FROM_START或Mode.PULL_FROM_END,需要设置刷新Listener为OnRefreshListener, 同时实现onRefresh()方法。 当然也可以设置为OnRefreshListener2,但是Mode.PULL_FROM_START的时候只调用onPullDownToRefresh()方法, Mode.PULL_FROM_END的时候只调用onPullUpToRefresh()方法 */ refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { //下拉刷新的时候调用的方法....请求第一页的数据,清空之前的数据,然后再添加设置适配器 @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { //下拉刷新....请求第一页的数据,清空之前的数据,然后再添加设置适配器 getRefreshData(); } //上拉刷新的时候调用的方法..page++,然后在请求数据 @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //上拉刷新/加载...加载的时候页数++ page_num++; getDataFromNet(); } }); } /** * 下拉刷新获取数据 */ private void getRefreshData() { NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //先清空一下数据 list.clear(); //添加到集合的最前边,,,,(0,,,,) list.addAll(0,dataDataBean.getResults()); //设置适配器 setAdapter(); //设置适配器之后停止刷新的操作 refreshListView.onRefreshComplete(); //可以设置刷新的时间.... startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新 } }); } /** * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作 * * */ private void getDataFromNet() { //第一个参数是接口,第二个上下文,第三个回调json数据 NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //先存入数据库 jsonDao.insertJson(json,"http://gank.io/api/data/Android/10/"+page_num); //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshListView.onRefreshComplete(); } }); } private void setAdapter() { if (listViewAdapter == null){ listViewAdapter = new ListViewAdapter(getActivity(),list); refreshListView.setAdapter(listViewAdapter); }else { listViewAdapter.notifyDataSetChanged(); } } }————————————————————————————————————————————————FragmentGridView
————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.GridView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshGridView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import news1510a.bawei.com.a16_pulltorefresh_demo.R; import news1510a.bawei.com.a16_pulltorefresh_demo.adapter.GridViewAdapter; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.DataDataBean; import news1510a.bawei.com.a16_pulltorefresh_demo.inter.JsonCallBack; import news1510a.bawei.com.a16_pulltorefresh_demo.util.NetDataUtil; /** * @author Dash * @date 2017/10/18 * @description: */ public class FragmentGridView extends Fragment { private PullToRefreshGridView refreshGridView; private int page_num = 1; private List<DataDataBean.ResultsBean> list = new ArrayList<>();//记录当前展示的所有数据 private ILoadingLayout startLabels; private GridViewAdapter gridViewAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_gridview_layout,container,false); refreshGridView = view.findViewById(R.id.refresh_grid_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //1.默认的获取第一页的数据,然后设置适配器 getDataFromNet(); //2.设置可以刷新的模式 refreshGridView.setMode(PullToRefreshBase.Mode.BOTH); //3.设置刷新的时候展示的文字(状态) startLabels = refreshGridView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshGridView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //4.设置下拉和上拉刷新的监听事件 refreshGridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<GridView> refreshView) { //下拉刷新....请求第一页的数据,清空之前的数据,然后再添加设置适配器 getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<GridView> refreshView) { //上拉刷新/加载...加载的时候页数++ page_num++; getDataFromNet(); } }); } /** * 下拉刷新获取数据 */ private void getRefreshData() { NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //先清空一下数据 list.clear(); //添加到集合的最前边,,,,(0,,,,) list.addAll(0,dataDataBean.getResults()); //设置适配器 setAdapter(); //设置适配器之后停止刷新的操作 refreshGridView.onRefreshComplete(); //可以设置刷新的时间.... startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新 } }); } /** * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作 * * */ private void getDataFromNet() { //第一个参数是接口,第二个上下文,第三个回调json数据 NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshGridView.onRefreshComplete(); } }); } /** * 设置适配器的方法 */ private void setAdapter() { if (gridViewAdapter == null){ gridViewAdapter = new GridViewAdapter(getActivity(),list); refreshGridView.setAdapter(gridViewAdapter); }else { gridViewAdapter.notifyDataSetChanged(); } } }————————————————————————————————————————————FragmentScrollView
——————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.fragment; 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.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.ScrollView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import news1510a.bawei.com.a16_pulltorefresh_demo.R; import news1510a.bawei.com.a16_pulltorefresh_demo.adapter.ListViewAdapter; import news1510a.bawei.com.a16_pulltorefresh_demo.adapter.ViewPagerAdapter; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.DataDataBean; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.LunBoBean; import news1510a.bawei.com.a16_pulltorefresh_demo.inter.JsonCallBack; import news1510a.bawei.com.a16_pulltorefresh_demo.util.NetDataUtil; /** * @author Dash * @date 2017/10/18 * @description: * * 使用可以刷新的ScrollView * * 1.scrollView里面嵌套listView的时候出现了一种现象,,,只展示一个条目,改变高度的时候可以展示出来其他的,但是还不全 * 2.自定义一个listView,主要是重写onMeasure方法,,,,重新测量高度 * 3.ListView自动抢夺焦点,,,需要使用代码把焦点取消 * */ public class FragmentScrollView extends Fragment { private PullToRefreshScrollView refreshScrollView; private ViewPager viewPager; private ListView listView; private List<DataDataBean.ResultsBean> list = new ArrayList<>();//记录当前展示的所有数据 private int page_num = 1; private ListViewAdapter listViewAdapter; private ILoadingLayout startLabels; private List<String> imageUrlList; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0){ //显示下一页....拿到当前页+1 viewPager.setCurrentItem(viewPager.getCurrentItem() +1); //再次发送消息 handler.sendEmptyMessageDelayed(0,2000); } } }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_scroll_layout, container, false); refreshScrollView = view.findViewById(R.id.refresh_scroll_view); viewPager = view.findViewById(R.id.image_view_pager); listView = view.findViewById(R.id.scroll_list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //失去焦点 listView.setFocusable(false); //轮播图 lunBoTu(); //listView展示数据 //1.获取网络数据,,,展示在listView上 getDataFromNet(); //2.设置刷新模式 /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */ refreshScrollView.setMode(PullToRefreshBase.Mode.BOTH); //3.通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别(也就是设置向下拉的时候头部里面显示的文字) //此时这里设置的是下拉刷新的时候显示的文字,所以第一个设置true表示现在是刷新,第二个设置为false startLabels = refreshScrollView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshScrollView.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); /** * 监听事件 */ refreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) { getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) { page_num++; getDataFromNet(); } }); } /** * 轮播图的方法 */ private void lunBoTu() { NetDataUtil.getData("http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android", getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //这个结合记录轮播图的所有地址 imageUrlList = new ArrayList<String>(); //解析数据 Gson gson = new Gson(); LunBoBean lunBoBean = gson.fromJson(json, LunBoBean.class); List<LunBoBean.DataBean.EssayBean> essay = lunBoBean.getData().getEssay(); for (LunBoBean.DataBean.EssayBean essayBean: essay) { //essayBean.getAuthor().get(0).getWeb_url() imageUrlList.add(essayBean.getAuthor().get(0).getWeb_url()); } //此时应该根据图片的路径,加载图片,设置适配器 ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getActivity(), imageUrlList); viewPager.setAdapter(viewPagerAdapter); //1.手动可以无限滑动....maxValue....把当前开始展示的位置放在足够大的某个位置 viewPager.setCurrentItem(imageUrlList.size()*100000); //2.自动轮播 handler.sendEmptyMessageDelayed(0,2000); } }); } /** * 下拉刷新获取数据 */ private void getRefreshData() { NetDataUtil.getData("http://gank.io/api/data/Android/10/1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //先清空一下数据 list.clear(); //添加到集合的最前边,,,,(0,,,,) list.addAll(0,dataDataBean.getResults()); //设置适配器 setAdapter(); //设置适配器之后停止刷新的操作 refreshScrollView.onRefreshComplete(); //可以设置刷新的时间.... startLabels.setLastUpdatedLabel("上次更新时间:"+new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis())));//last最近的,最后一次update修改/更新 } }); } /** * 刚开始进入页面获取网络数据....还可以作为上拉加载获取数据的操作 * * */ private void getDataFromNet() { //第一个参数是接口,第二个上下文,第三个回调json数据 NetDataUtil.getData("http://gank.io/api/data/Android/10/"+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String json) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class); //往后面添加... list.addAll(dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshScrollView.onRefreshComplete(); } }); } /** * 设置适配器的方法 */ private void setAdapter() { if (listViewAdapter == null){ listViewAdapter = new ListViewAdapter(getActivity(),list); listView.setAdapter(listViewAdapter); }else { listViewAdapter.notifyDataSetChanged(); } } }——————————————————————————————————————————————
fragment_listview_layout.xml
————————————————————————————————————————————-————<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!--中多了几个属性 分别以ptr开头,这是指定pullToRefreshListView在刷新的时候出现的特效, 比如ptrDrawable第一个是指定刷新时显示的图片,ptrAnimationStyle第二个是指定刷新的图片以何种方式显示出来, ptrHeaderBackground第三个是指定刷新时头部的背景,ptrHeaderTextColor第四个是指定刷新时头部字体的颜色。--> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/refresh_list_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" > </com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>————————————————————————————————————————————
fragment_gridview_layout.xml
————————————————————————————————————————————————<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!--中多了几个属性 分别以ptr开头,这是指定pullToRefreshListView在刷新的时候出现的特效, 比如ptrDrawable第一个是指定刷新时显示的图片,ptrAnimationStyle第二个是指定刷新的图片以何种方式显示出来, ptrHeaderBackground第三个是指定刷新时头部的背景,ptrHeaderTextColor第四个是指定刷新时头部字体的颜色。--> <com.handmark.pulltorefresh.library.PullToRefreshGridView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:numColumns="2" android:id="@+id/refresh_grid_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" > </com.handmark.pulltorefresh.library.PullToRefreshGridView> </LinearLayout>————————————————————————————————————————————
fragment_scroll_layout.xml
————————————————————————————————————————————<?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"> <!--中多了几个属性 分别以ptr开头,这是指定pullToRefreshListView在刷新的时候出现的特效, 比如ptrDrawable第一个是指定刷新时显示的图片,ptrAnimationStyle第二个是指定刷新的图片以何种方式显示出来, ptrHeaderBackground第三个是指定刷新时头部的背景,ptrHeaderTextColor第四个是指定刷新时头部字体的颜色。--> <com.handmark.pulltorefresh.library.PullToRefreshScrollView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/refresh_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrAnimationStyle="flip" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/image_view_pager" android:layout_width="match_parent" android:layout_height="200dp"> </android.support.v4.view.ViewPager> <news1510a.bawei.com.a16_pulltorefresh_demo.view.MyListView android:id="@+id/scroll_list_view" android:layout_width="match_parent" android:layout_height="match_parent"> </news1510a.bawei.com.a16_pulltorefresh_demo.view.MyListView> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshScrollView> </LinearLayout>————————————————————————————————————————————ListViewAdapter
——————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.adapter; 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; import news1510a.bawei.com.a16_pulltorefresh_demo.R; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.DataDataBean; import news1510a.bawei.com.a16_pulltorefresh_demo.util.ImageLoaderUtil; /** * @author Dash * @date 2017/10/18 * @description: * * 多条目加载 */ public class ListViewAdapter extends BaseAdapter { Context context; List<DataDataBean.ResultsBean> list; private int TEXT_ONLY = 0; private int IMAGE_TEXT = 1; public ListViewAdapter(Context context, List<DataDataBean.ResultsBean> 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 int getViewTypeCount() {//返回有多少种条目的视图 return 2; } @Override public int getItemViewType(int position) {//返回当前条目视图的类型 //根据当前位置是否有图片决定,该条目的类型是什么 if (list.get(position).getImages() != null){ return IMAGE_TEXT; } return TEXT_ONLY; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (getItemViewType(i) == TEXT_ONLY){ TextHolder holder; if (view == null){ view = View.inflate(context, R.layout.item_text_layout,null); holder = new TextHolder(); holder.textView = view.findViewById(R.id.text_title); view.setTag(holder); }else { holder = (TextHolder) view.getTag(); } holder.textView.setText(list.get(i).getDesc()); }else if (getItemViewType(i) == IMAGE_TEXT){ ImageHolder holder; if (view == null){ view = View.inflate(context, R.layout.item_image_layout,null); holder = new ImageHolder(); holder.textView = view.findViewById(R.id.text_title); holder.imageView = view.findViewById(R.id.image_view); view.setTag(holder); }else { holder = (ImageHolder) view.getTag(); } holder.textView.setText(list.get(i).getDesc()); //设置图片的显示 ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0),holder.imageView, ImageLoaderUtil.getRoundOption()); } return view; } private class TextHolder{ TextView textView; } private class ImageHolder{ TextView textView; ImageView imageView; } } ————————————————————————————————————GridViewAdapter
————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.adapter; 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; import news1510a.bawei.com.a16_pulltorefresh_demo.R; import news1510a.bawei.com.a16_pulltorefresh_demo.bean.DataDataBean; import news1510a.bawei.com.a16_pulltorefresh_demo.util.ImageLoaderUtil; /** * @author Dash * @date 2017/10/18 * @description: */ public class GridViewAdapter extends BaseAdapter { Context context; List<DataDataBean.ResultsBean> list; public GridViewAdapter(Context context, List<DataDataBean.ResultsBean> 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_gridviewlayout,null); holder = new ViewHolder(); holder.textView = view.findViewById(R.id.grid_text); holder.imageView = view.findViewById(R.id.grid_image); view.setTag(holder); }else { holder = (ViewHolder) view.getTag(); } holder.textView.setText(list.get(i).getDesc()); //展示图片的时候,,,getImages这个集合有的有,有的为空...所以要进行.判断 if (list.get(i).getImages() != null){ //此时加载图片显示 ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0),holder.imageView, ImageLoaderUtil.getDefaultOption()); } return view; } private class ViewHolder{ TextView textView; ImageView imageView; } }——————————————————————————————————————ViewPagerAdapter
————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.adapter; import android.content.Context; 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; import news1510a.bawei.com.a16_pulltorefresh_demo.util.ImageLoaderUtil; /** * @author Dash * @date 2017/10/19 * @description: */ public class ViewPagerAdapter extends PagerAdapter { Context context; List<String> imageUrlList; public ViewPagerAdapter(Context context, List<String> imageUrlList) { this.context = context; this.imageUrlList = imageUrlList; } @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.创建imageView...添加到容器中 ImageView imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); //展示图片 ImageLoader.getInstance().displayImage(imageUrlList.get(position%imageUrlList.size()),imageView, ImageLoaderUtil.getDefaultOption()); //添加 container.addView(imageView); //2.返回当前展示的imageView控件 return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }————————————————————————————————BaseApplication
——————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.application; import android.app.Application; import news1510a.bawei.com.a16_pulltorefresh_demo.util.ImageLoaderUtil; /** * @author Dash * @date 2017/10/18 * @description: */ public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); //初始化 ImageLoaderUtil.init(this); } }——————————————————————————————————————————————————————————————————————————————————————————DataDataBean
package news1510a.bawei.com.a16_pulltorefresh_demo.bean; import java.util.List; /** * @author Dash * @date 2017/10/18 * @description: */ public class DataDataBean { /** * error : false * results : [{"_id":"59de2f22421aa90fe50c015c","createdAt":"2017-10-11T22:48:02.721Z","desc":"用 Kotlin 实现的基于物理的动画","images":["http://img.gank.io/58925abb-3e11-4d6e-9e44-a4567c03d03f"],"publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/sagar-viradiya/AndroidPhysicsAnimation","used":true,"who":" Thunder Bouble"},{"_id":"59e46c6a421aa90fe50c0174","createdAt":"2017-10-16T16:23:06.637Z","desc":"Android 通用圆角布局,快速实现圆角需求。","images":["http://img.gank.io/4d9b99ba-cc97-4ef8-b834-477ad8a97100"],"publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/GcsSloop/rclayout","used":true,"who":"sloop"},{"_id":"59e46c89421aa90fe7253598","createdAt":"2017-10-16T16:23:37.313Z","desc":"Android 加密工具包。","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/GcsSloop/encrypt","used":true,"who":"sloop"},{"_id":"59e55ecd421aa90fe725359c","createdAt":"2017-10-17T09:37:17.526Z","desc":"一个用 Kotlin 写的轻量级 URL 路由器框架","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://github.com/twocity/linker","used":true,"who":"ZhangTitanjum"},{"_id":"59e5740f421aa90fe725359f","createdAt":"2017-10-17T11:07:59.933Z","desc":"Android面试指南:我们需要怎样的工程师,我们需要成为怎样的工程师?","publishedAt":"2017-10-17T13:10:43.731Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzU4MjAzNTAwMA==&mid=2247483781&idx=2&sn=c5ef46cea309df058d2b168fada6dec0&chksm=fdbf32d2cac8bbc4b7f373c76bfc4d2447717634fdbc5afae565cca92551bfd152b329d5e103#rd","used":true,"who":null},{"_id":"59df3eac421aa90fef20347c","createdAt":"2017-10-12T18:06:36.692Z","desc":"文章中详实说明利用Cmake构造Ndk库需要注意的问题,以及部分Cmake命令的解读。","publishedAt":"2017-10-16T12:19:20.311Z","source":"web","type":"Android","url":"http://blog.csdn.net/qq_34902522/article/details/78144127","used":true,"who":null},{"_id":"59e1b47b421aa90fef203481","createdAt":"2017-10-14T14:53:47.998Z","desc":"详细介绍java垃圾回收的过程及相关算法","publishedAt":"2017-10-16T12:19:20.311Z","source":"chrome","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIwODI3MTc2Ng==&mid=2649647405&idx=1&sn=46a48cedd1540a994cd316ca164e005a&chksm=8f1f69d4b868e0c25245676ac55dc8d1fcad3dfa4bc63a2e0835b0a1155f1d2320a45a7c7078#rd","used":true,"who":"技术特工队"},{"_id":"59e4092c421aa90fe50c016d","createdAt":"2017-10-16T09:19:40.793Z","desc":"几条小经验帮你美化你的GitHub开源项目","publishedAt":"2017-10-16T12:19:20.311Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIwMzYwMTk1NA==&mid=2247487344&idx=1&sn=744a9ebc0425fb3fa17c3f62eb59e421","used":true,"who":"陈宇明"},{"_id":"59dc7149421aa94e07d18490","createdAt":"2017-10-10T15:05:45.902Z","desc":"使用 Kotlin 实现的一个 Dribbble 客户端","images":["http://img.gank.io/05d6552f-97ba-4d52-ad33-3caeba5cb327","http://img.gank.io/84594f1b-d10e-42a3-afc1-c7d2bf9ac0cf"],"publishedAt":"2017-10-11T12:40:42.545Z","source":"web","type":"Android","url":"https://github.com/armcha/Ribble","used":true,"who":" Thunder Bouble"},{"_id":"59dcca81421aa94e0053bddf","createdAt":"2017-10-10T21:26:25.797Z","desc":"最近在给某某银行做项目的时,涉及到了数据埋点,性能监控等问题,那我们起先想到的有两种方案,方案之一就是借助第三方,比如友盟、Bugly等,由于项目是部署在银行的网络框架之内的,所以该方案不可行。","publishedAt":"2017-10-11T12:40:42.545Z","source":"web","type":"Android","url":"https://mp.weixin.qq.com/s?__biz=MzIyMjQ0MTU0NA==&mid=2247484445&idx=1&sn=8eef04a7932b58ef0012643db228fb32&chksm=e82c3d3adf5bb42c88333160a88c7b05fb5f45798434afa956fe1f1a58c7713ef121c7ea0af4&scene=0&key=7460e137ddd94f92f668e812cfc0aef8fde2bdf7943c7409875cce12a3baed3526f31e4a707ed86896ee8ddbbf761bb2f09b2d7406c3b9016589495240d835d967a2141231c43d084635a7df11647fb0&ascene=0&uin=MjMzMzgwOTEwMQ%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.10.5+build(14F27)&version=11020201&pass_ticket=54ym37fDoXgDZm7nzjGt6KNDR9%2F9ZIU8%2Bo5kNcGEXqi8GKijls6et5TXcXxbERi%2F","used":true,"who":"Tamic (码小白)"}] */ private boolean error; private List<ResultsBean> results; public boolean isError() { return error; } public void setError(boolean error) { this.error = error; } public List<ResultsBean> getResults() { return results; } public void setResults(List<ResultsBean> results) { this.results = results; } public static class ResultsBean { /** * _id : 59de2f22421aa90fe50c015c * createdAt : 2017-10-11T22:48:02.721Z * desc : 用 Kotlin 实现的基于物理的动画 * images : ["http://img.gank.io/58925abb-3e11-4d6e-9e44-a4567c03d03f"] * publishedAt : 2017-10-17T13:10:43.731Z * source : web * type : Android * url : https://github.com/sagar-viradiya/AndroidPhysicsAnimation * used : true * who : Thunder Bouble */ private String _id; private String createdAt; private String desc; private String publishedAt; private String source; private String type; private String url; private boolean used; private String who; private List<String> images; public String get_id() { return _id; } public void set_id(String _id) { this._id = _id; } public String getCreatedAt() { return createdAt; } public void setCreatedAt(String createdAt) { this.createdAt = createdAt; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getPublishedAt() { return publishedAt; } public void setPublishedAt(String publishedAt) { this.publishedAt = publishedAt; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public boolean isUsed() { return used; } public void setUsed(boolean used) { this.used = used; } public String getWho() { return who; } public void setWho(String who) { this.who = who; } public List<String> getImages() { return images; } public void setImages(List<String> images) { this.images = images; } } } ————————————————————————————————————————————————————————————————————————————————————————————————LunBoBean
package news1510a.bawei.com.a16_pulltorefresh_demo.bean; import java.util.List; /** * @author Dash * @date 2017/10/19 * @description: */ public class LunBoBean { /** * res : 0 * data : {"essay":[{"content_id":"2867","hp_title":"200万很好啊,但我就想要5000月薪","hp_makettime":"2017-10-19 06:00:00","guide_word":"你以为自己是天才枪手,其实只是炮灰。","start_video":"","author":[{"user_id":"7181466","user_name":"十三妹丁无畏","desc":"菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。\r\n微博:@十三妹丁无畏","wb_name":"@十三妹丁无畏","is_settled":"0","settled_type":"0","summary":"音乐编辑","fans_total":"2995","web_url":"http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB"}],"has_audio":false,"author_list":[{"user_id":"7181466","user_name":"十三妹丁无畏","desc":"菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。\r\n微博:@十三妹丁无畏","wb_name":"@十三妹丁无畏","is_settled":"0","settled_type":"0","summary":"音乐编辑","fans_total":"2995","web_url":"http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB"}]},{"content_id":"2866","hp_title":"去屠宰场谈恋爱好吗?","hp_makettime":"2017-10-19 06:00:00","guide_word":"无论从哪条路走下来,都会跌入相同滑道,相同结局。","start_video":"","author":[{"user_id":"6859004","user_name":"兔草","desc":"生于武汉,现居上海。写小说、评论、剧本等。小说见ONE、豆瓣、《野草》等。","wb_name":"@兔草啊吐槽","is_settled":"0","settled_type":"0","summary":"退役文案,杂耍写手","fans_total":"60","web_url":"http://image.wufazhuce.com/FmIxumvucSMThvBqzjla4dEmFbwL"}],"has_audio":false,"author_list":[{"user_id":"6859004","user_name":"兔草","desc":"生于武汉,现居上海。写小说、评论、剧本等。小说见ONE、豆瓣、《野草》等。","wb_name":"@兔草啊吐槽","is_settled":"0","settled_type":"0","summary":"退役文案,杂耍写手","fans_total":"60","web_url":"http://image.wufazhuce.com/FmIxumvucSMThvBqzjla4dEmFbwL"}]},{"content_id":"2863","hp_title":"冬日恶狠狠清单","hp_makettime":"2017-10-18 06:00:00","guide_word":"生活里一切都很好,只是我的内心仍有风暴肆虐。","start_video":"","author":[{"user_id":"4813757","user_name":"苏更生","desc":"「一个」App常驻作家,微信公众号:hulizhai","wb_name":"@假苏更生","is_settled":"0","settled_type":"0","summary":"「一个」App常驻作家,微信公众号:hulizhai","fans_total":"17249","web_url":"http://image.wufazhuce.com/Fg_e6teZsb3lZ1QStYtdnAkh6bO8"}],"has_audio":false,"author_list":[{"user_id":"4813757","user_name":"苏更生","desc":"「一个」App常驻作家,微信公众号:hulizhai","wb_name":"@假苏更生","is_settled":"0","settled_type":"0","summary":"「一个」App常驻作家,微信公众号:hulizhai","fans_total":"17249","web_url":"http://image.wufazhuce.com/Fg_e6teZsb3lZ1QStYtdnAkh6bO8"}]},{"content_id":"2862","hp_title":"关于她的命运","hp_makettime":"2017-10-18 06:00:00","guide_word":"两手空空。我们就这样迎向了未来。","start_video":"","author":[{"user_id":"4813479","user_name":"荞麦","desc":"「一个」常驻作家。最新随笔集《当一切在我们周围暗下来》。","wb_name":"@荞麦chen","is_settled":"0","settled_type":"0","summary":"「一个」常驻作家。最新随笔集《当一切在我们周围暗下来》。","fans_total":"4959","web_url":"http://image.wufazhuce.com/FsRokzycWWx_CucHTFUN4OFBh5s6"}],"has_audio":true,"author_list":[{"user_id":"4813479","user_name":"荞麦","desc":"「一个」常驻作家。最新随笔集《当一切在我们周围暗下来》。","wb_name":"@荞麦chen","is_settled":"0","settled_type":"0","summary":"「一个」常驻作家。最新随笔集《当一切在我们周围暗下来》。","fans_total":"4959","web_url":"http://image.wufazhuce.com/FsRokzycWWx_CucHTFUN4OFBh5s6"}]},{"content_id":"2861","hp_title":"附近的人","hp_makettime":"2017-10-17 06:00:00","guide_word":"她整个人被震荡着,被拖走,被摇撼。她情不自禁地发出低声的尖叫。","start_video":"","author":[{"user_id":"7867217","user_name":"MENG","desc":"MENG,MeRead读书会创办人,不务正业写作者。","wb_name":"@萌之刺刺","is_settled":"0","settled_type":"0","summary":"MeRead创办人,不务正业写作者。","fans_total":"1329","web_url":"http://image.wufazhuce.com/Fjs4uDTgQAXnIOPEvnnIIA7HdBxS"}],"has_audio":true,"author_list":[{"user_id":"7867217","user_name":"MENG","desc":"MENG,MeRead读书会创办人,不务正业写作者。","wb_name":"@萌之刺刺","is_settled":"0","settled_type":"0","summary":"MeRead创办人,不务正业写作者。","fans_total":"1329","web_url":"http://image.wufazhuce.com/Fjs4uDTgQAXnIOPEvnnIIA7HdBxS"}]},{"content_id":"2860","hp_title":"我说过的每一句谎,都是因为我爱你","hp_makettime":"2017-10-16 06:00:00","guide_word":"你要是爱他,就得说谎,不管你愿不愿意。","start_video":"","author":[{"user_id":"7898995","user_name":"李开春","desc":"爱国儿女,鸡汤爱好者,不务正业的理工女。","wb_name":"@李开开开春","is_settled":"0","settled_type":"0","summary":"爱国儿女,鸡汤爱好者,不务正业的理工女。","fans_total":"6794","web_url":"http://image.wufazhuce.com/FuCd1X9lLbWuu3Ps_aoMd8vJjQml"}],"has_audio":false,"author_list":[{"user_id":"7898995","user_name":"李开春","desc":"爱国儿女,鸡汤爱好者,不务正业的理工女。","wb_name":"@李开开开春","is_settled":"0","settled_type":"0","summary":"爱国儿女,鸡汤爱好者,不务正业的理工女。","fans_total":"6794","web_url":"http://image.wufazhuce.com/FuCd1X9lLbWuu3Ps_aoMd8vJjQml"}]},{"content_id":"2859","hp_title":"建设北路32号B栋","hp_makettime":"2017-10-16 06:00:00","guide_word":"人活着就是在积分的话,三十年能换个什么狗屁东西呢?","start_video":"","author":[{"user_id":"7448679","user_name":"阿枣","desc":"写作者,翻译。","wb_name":"","is_settled":"0","settled_type":"0","summary":"写作者,翻译。","fans_total":"44","web_url":"http://image.wufazhuce.com/FjM-TK7UjhU11Rdshf-a6SeA2_uL"}],"has_audio":true,"author_list":[{"user_id":"7448679","user_name":"阿枣","desc":"写作者,翻译。","wb_name":"","is_settled":"0","settled_type":"0","summary":"写作者,翻译。","fans_total":"44","web_url":"http://image.wufazhuce.com/FjM-TK7UjhU11Rdshf-a6SeA2_uL"}]},{"content_id":"2858","hp_title":"另一个空间","hp_makettime":"2017-10-15 06:00:00","guide_word":"你说,这是不是童话故事?","start_video":"","author":[{"user_id":"7754467","user_name":"程皎旸","desc":"旅居香港,曾获香港青年文学奖。公众号:薄荷子弹。","wb_name":"@程皎旸-","is_settled":"0","settled_type":"0","summary":"青年作家,记者。","fans_total":"786","web_url":"http://image.wufazhuce.com/Fl5nYa_3VrmE5_42lRc8pF5hsypQ"}],"has_audio":false,"author_list":[{"user_id":"7754467","user_name":"程皎旸","desc":"旅居香港,曾获香港青年文学奖。公众号:薄荷子弹。","wb_name":"@程皎旸-","is_settled":"0","settled_type":"0","summary":"青年作家,记者。","fans_total":"786","web_url":"http://image.wufazhuce.com/Fl5nYa_3VrmE5_42lRc8pF5hsypQ"}]},{"content_id":"2856","hp_title":"贱兮兮地给所有人点赞","hp_makettime":"2017-10-15 06:00:00","guide_word":"它像一幅数字版清明上河图,卷首已然人山人海。","start_video":"","author":[{"user_id":"7654034","user_name":"黄集伟","desc":"黄集伟,专栏作者,曾有\u201c阅读笔记\u201d系列、\u201c语词笔记\u201d系列、《孤岛访谈录》等闲书出版。","wb_name":"","is_settled":"0","settled_type":"0","summary":"黄集伟,专栏作者。","fans_total":"3731","web_url":"http://image.wufazhuce.com/FvVmWbqlle7jlUCTeozoval9NyBH"}],"has_audio":false,"author_list":[{"user_id":"7654034","user_name":"黄集伟","desc":"黄集伟,专栏作者,曾有\u201c阅读笔记\u201d系列、\u201c语词笔记\u201d系列、《孤岛访谈录》等闲书出版。","wb_name":"","is_settled":"0","settled_type":"0","summary":"黄集伟,专栏作者。","fans_total":"3731","web_url":"http://image.wufazhuce.com/FvVmWbqlle7jlUCTeozoval9NyBH"}]},{"content_id":"2857","hp_title":"女孩们的友谊","hp_makettime":"2017-10-14 06:00:00","guide_word":"起码她的包没有我的贵。","start_video":"","author":[{"user_id":"5553913","user_name":"周苏婕","desc":"周苏婕,青年作家。微信公众号:sujiewriting","wb_name":"@anan周苏婕","is_settled":"0","settled_type":"0","summary":"周苏婕,青年作家。微信公众号:sujiewriting","fans_total":"1936","web_url":"http://image.wufazhuce.com/FmDRnQ1XhReHRHB4jYqAPSx8htsP"}],"has_audio":false,"author_list":[{"user_id":"5553913","user_name":"周苏婕","desc":"周苏婕,青年作家。微信公众号:sujiewriting","wb_name":"@anan周苏婕","is_settled":"0","settled_type":"0","summary":"周苏婕,青年作家。微信公众号:sujiewriting","fans_total":"1936","web_url":"http://image.wufazhuce.com/FmDRnQ1XhReHRHB4jYqAPSx8htsP"}]}],"serial":[{"id":"445","serial_id":"50","number":"9","title":"相亲攻略手册(7)·七月,悲喜交加(下)","excerpt":"我很感谢他最后没有跟我说抱歉,或者跟我说,我是个好姑娘。","read_num":"18800","maketime":"2017-10-19 06:00:00","start_video":"","author":{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"},"has_audio":false,"author_list":[{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}],"serial_list":["430","431","434","435","437","438","444","439","445"]},{"id":"452","serial_id":"49","number":"10","title":"我在三十岁的第一年 II · 第十话","excerpt":"人生就是一场大型错位。","read_num":"32200","maketime":"2017-10-18 06:00:00","start_video":"","author":{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"},"has_audio":false,"author_list":[{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"}],"serial_list":["428","429","433","436","440","442","448","449","450","452"]},{"id":"439","serial_id":"50","number":"8","title":"相亲攻略手册(7)·七月,悲喜交加(上)","excerpt":"我想等的人,也不再是你。","read_num":"39200","maketime":"2017-10-17 06:00:00","start_video":"","author":{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"},"has_audio":false,"author_list":[{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}],"serial_list":["430","431","434","435","437","438","444","439","445"]},{"id":"450","serial_id":"49","number":"9","title":"我在三十岁的第一年 II · 第九话","excerpt":"如果一个人被迫过着清心寡欲的生活,只要有一个机会,她就会跑向纵情享乐。","read_num":"39800","maketime":"2017-10-16 06:00:00","start_video":"","author":{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"},"has_audio":false,"author_list":[{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"}],"serial_list":["428","429","433","436","440","442","448","449","450","452"]},{"id":"444","serial_id":"50","number":"7","title":"相亲攻略手册(6)·六月,青草盛开(下)","excerpt":"他始终横亘在我的生活里,就像是心头一根温和的刺。","read_num":"42100","maketime":"2017-10-14 06:00:00","start_video":"","author":{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"},"has_audio":false,"author_list":[{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}],"serial_list":["430","431","434","435","437","438","444","439","445"]},{"id":"449","serial_id":"49","number":"8","title":"我在三十岁的第一年 II · 第八话","excerpt":"日常生活给再多奇迹,也总是乏味和平庸的结尾最多。","read_num":"43300","maketime":"2017-10-13 06:00:00","start_video":"","author":{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"},"has_audio":false,"author_list":[{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"}],"serial_list":["428","429","433","436","440","442","448","449","450","452"]},{"id":"438","serial_id":"50","number":"6","title":"相亲攻略手册(6)·六月,青草盛开(上)","excerpt":"但谁知道,终究是一语成谶。","read_num":"45400","maketime":"2017-10-12 06:00:00","start_video":"","author":{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"},"has_audio":false,"author_list":[{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}],"serial_list":["430","431","434","435","437","438","444","439","445"]},{"id":"448","serial_id":"49","number":"7","title":"我在三十岁的第一年 II · 第七话","excerpt":"人所有一切的行动,不过是遵循内心最强烈的愿望。","read_num":"42200","maketime":"2017-10-11 06:00:00","start_video":"","author":{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"},"has_audio":false,"author_list":[{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"}],"serial_list":["428","429","433","436","440","442","448","449","450","452"]},{"id":"437","serial_id":"50","number":"5","title":"相亲攻略手册(5)·五月,我们对面坐着","excerpt":"该死的小雀跃。","read_num":"47200","maketime":"2017-10-10 06:00:00","start_video":"","author":{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"},"has_audio":false,"author_list":[{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}],"serial_list":["430","431","434","435","437","438","444","439","445"]},{"id":"442","serial_id":"49","number":"6","title":"我在三十岁的第一年 II · 第六话","excerpt":"我不是拜金,我只是习惯了金钱带来的快乐。","read_num":"50600","maketime":"2017-10-09 06:00:00","start_video":"","author":{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"},"has_audio":false,"author_list":[{"user_id":"4808838","user_name":"毛利","desc":"毛利,专栏作家。《我在三十岁的第一年》即将上市。","wb_name":"@毛利","is_settled":"0","settled_type":"0","summary":"专栏作家。","fans_total":"8235","web_url":"http://image.wufazhuce.com/Fl3AgUQb4i6WocmORrnhMPkcDkV4"}],"serial_list":["428","429","433","436","440","442","448","449","450","452"]}],"question":[{"question_id":"1888","question_title":"我们能为想自杀的人做点什么?","answer_title":"","answer_content":"不要对一个没有双腿的人说奔跑是一件多么轻松的事情。","question_makettime":"2017-10-19 06:00:00","start_video":"","author_list":[{"user_id":"7834279","user_name":"露易莎大能个儿","desc":"你想看到什么?","wb_name":"@露易莎大能个儿","is_settled":"0","settled_type":"0","summary":"朝阳区唯一的精灵。","fans_total":"680","web_url":"http://image.wufazhuce.com/FjREAxQyRS8OCKo9VJ1pmMFWCEKA"}],"asker_list":[{"user_id":"0","user_name":"高高","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1886","question_title":"受邀参加前任婚礼该怎么办?","answer_title":"","answer_content":"当初是你要分开,分开就分开,现在又要用婚礼,来抢我的钱。","question_makettime":"2017-10-18 06:00:00","start_video":"","author_list":[{"user_id":"0","user_name":"网友","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}],"asker_list":[{"user_id":"0","user_name":"丰博","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1887","question_title":"为人父母之后心境会有怎样的变化?","answer_title":"","answer_content":"当森林甬道遍布,我也只有祝福。","question_makettime":"2017-10-17 06:00:00","start_video":"","author_list":[{"user_id":"4814673","user_name":"刘墨闻","desc":"设计师,青年作者。@刘墨闻","wb_name":"","is_settled":"0","settled_type":"0","summary":"设计师,青年作者。","fans_total":"2113","web_url":"http://image.wufazhuce.com/FvHffjDa1ORrg83qhajnR_zhwJlg"}],"asker_list":[{"user_id":"0","user_name":"in_Mars","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1884","question_title":"世界上有会亏钱的老虎机吗?","answer_title":"","answer_content":"所有看似随机的人工结果背后都有迹可循。","question_makettime":"2017-10-16 06:00:00","start_video":"","author_list":[{"user_id":"0","user_name":"温义飞","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}],"asker_list":[{"user_id":"0","user_name":"老李","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1885","question_title":"智商高的人会缺少人情味儿吗?","answer_title":"","answer_content":"智商高的人会缺少人情味儿吗?","question_makettime":"2017-10-15 06:00:00","start_video":"","author_list":[{"user_id":"8185629","user_name":"行尸走肥肉","desc":"一位拥有三双拖鞋的便衣诗人。","wb_name":"@行尸走肥肉","is_settled":"0","settled_type":"0","summary":"一位拥有三双拖鞋的便衣诗人。","fans_total":"1495","web_url":"http://image.wufazhuce.com/FiE2WkXRL8Vf3k1683CDDgU7VqgM"}],"asker_list":[{"user_id":"0","user_name":"网友","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1883","question_title":"你有过哪些一见如故的经历?","answer_title":"","answer_content":"那种只看一眼就觉得遇到对的人的感觉,就像晒到了午后的太阳。","question_makettime":"2017-10-14 06:00:00","start_video":"","author_list":[{"user_id":"0","user_name":"网友","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}],"asker_list":[{"user_id":"0","user_name":"一个App工作室 ","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1882","question_title":"为什么会很难接受爱豆公开恋情?","answer_title":"","answer_content":"众生都坠入情网,你是我们唯一寄望。","question_makettime":"2017-10-13 06:00:00","start_video":"","author_list":[{"user_id":"0","user_name":"王花花","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}],"asker_list":[{"user_id":"0","user_name":"路小路","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1881","question_title":"吃多少苦才能过上幸福的生活?","answer_title":"","answer_content":"吃了这么多苦,只是为了过上普通人的生活。","question_makettime":"2017-10-12 06:00:00","start_video":"","author_list":[{"user_id":"8473724","user_name":"青崖白鹿","desc":"且放白鹿青崖间。","wb_name":"","is_settled":"0","settled_type":"0","summary":"且放白鹿青崖间。","fans_total":"312","web_url":"http://image.wufazhuce.com/FviXy-X_ds4zr1JIDd2TvvSfpvBO"}],"asker_list":[{"user_id":"0","user_name":"丁丁","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1880","question_title":"为什么傲慢是七宗罪之首?","answer_title":"","answer_content":"傲慢动摇了信仰的根基,使任何尝试性的沟通都无法成功。","question_makettime":"2017-10-11 06:00:00","start_video":"","author_list":[{"user_id":"4814646","user_name":"三三","desc":"律师,青年作者,一个全年出现的圣诞老人。","wb_name":"@三三坡","is_settled":"0","settled_type":"0","summary":"律师,青年作者,一个全年出现的圣诞老人。","fans_total":"510","web_url":"http://image.wufazhuce.com/Frilgx0XpHkpgggE2jzQM0rHbnVB"}],"asker_list":[{"user_id":"0","user_name":"皮卡诺","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]},{"question_id":"1879","question_title":"如果恋人不愿意公开恋情,你会怎么看待?","answer_title":"","answer_content":"确定不反思一下是不是自己太丑?","question_makettime":"2017-10-10 06:00:00","start_video":"","author_list":[{"user_id":"7523856","user_name":"网友","desc":"网友","wb_name":"","is_settled":"0","settled_type":"0","summary":"网友","fans_total":"488","web_url":"http://image.wufazhuce.com/Fvx6SPugEWRuXLvAkuB7gCGaHRjR"}],"asker_list":[{"user_id":"0","user_name":"勺哥","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}]}]} */ private int res; private DataBean data; public int getRes() { return res; } public void setRes(int res) { this.res = res; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { private List<EssayBean> essay; private List<SerialBean> serial; private List<QuestionBean> question; public List<EssayBean> getEssay() { return essay; } public void setEssay(List<EssayBean> essay) { this.essay = essay; } public List<SerialBean> getSerial() { return serial; } public void setSerial(List<SerialBean> serial) { this.serial = serial; } public List<QuestionBean> getQuestion() { return question; } public void setQuestion(List<QuestionBean> question) { this.question = question; } public static class EssayBean { /** * content_id : 2867 * hp_title : 200万很好啊,但我就想要5000月薪 * hp_makettime : 2017-10-19 06:00:00 * guide_word : 你以为自己是天才枪手,其实只是炮灰。 * start_video : * author : [{"user_id":"7181466","user_name":"十三妹丁无畏","desc":"菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。\r\n微博:@十三妹丁无畏","wb_name":"@十三妹丁无畏","is_settled":"0","settled_type":"0","summary":"音乐编辑","fans_total":"2995","web_url":"http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB"}] * has_audio : false * author_list : [{"user_id":"7181466","user_name":"十三妹丁无畏","desc":"菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。\r\n微博:@十三妹丁无畏","wb_name":"@十三妹丁无畏","is_settled":"0","settled_type":"0","summary":"音乐编辑","fans_total":"2995","web_url":"http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB"}] */ private String content_id; private String hp_title; private String hp_makettime; private String guide_word; private String start_video; private boolean has_audio; private List<AuthorBean> author; private List<AuthorListBean> author_list; public String getContent_id() { return content_id; } public void setContent_id(String content_id) { this.content_id = content_id; } public String getHp_title() { return hp_title; } public void setHp_title(String hp_title) { this.hp_title = hp_title; } public String getHp_makettime() { return hp_makettime; } public void setHp_makettime(String hp_makettime) { this.hp_makettime = hp_makettime; } public String getGuide_word() { return guide_word; } public void setGuide_word(String guide_word) { this.guide_word = guide_word; } public String getStart_video() { return start_video; } public void setStart_video(String start_video) { this.start_video = start_video; } public boolean isHas_audio() { return has_audio; } public void setHas_audio(boolean has_audio) { this.has_audio = has_audio; } public List<AuthorBean> getAuthor() { return author; } public void setAuthor(List<AuthorBean> author) { this.author = author; } public List<AuthorListBean> getAuthor_list() { return author_list; } public void setAuthor_list(List<AuthorListBean> author_list) { this.author_list = author_list; } public static class AuthorBean { /** * user_id : 7181466 * user_name : 十三妹丁无畏 * desc : 菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。 微博:@十三妹丁无畏 * wb_name : @十三妹丁无畏 * is_settled : 0 * settled_type : 0 * summary : 音乐编辑 * fans_total : 2995 * web_url : http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB */ private String user_id; private String user_name; private String desc; private String wb_name; private String is_settled; private String settled_type; private String summary; private String fans_total; private String web_url; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } } public static class AuthorListBean { /** * user_id : 7181466 * user_name : 十三妹丁无畏 * desc : 菜鸟乐评小编,专业观众。不客观,杂食,偏爱postpunk&newwave。超典型射手,LGBTQ人权平等拥护。 微博:@十三妹丁无畏 * wb_name : @十三妹丁无畏 * is_settled : 0 * settled_type : 0 * summary : 音乐编辑 * fans_total : 2995 * web_url : http://image.wufazhuce.com/Fng58eK6AcGwxDjTftvM4_j9DfeB */ private String user_id; private String user_name; private String desc; private String wb_name; private String is_settled; private String settled_type; private String summary; private String fans_total; private String web_url; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } } } public static class SerialBean { /** * id : 445 * serial_id : 50 * number : 9 * title : 相亲攻略手册(7)·七月,悲喜交加(下) * excerpt : 我很感谢他最后没有跟我说抱歉,或者跟我说,我是个好姑娘。 * read_num : 18800 * maketime : 2017-10-19 06:00:00 * start_video : * author : {"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"} * has_audio : false * author_list : [{"user_id":"4814710","user_name":"姚佳黛","desc":"喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。","wb_name":"","is_settled":"0","settled_type":"0","summary":"学医的见过手术室血肉横飞的文字编辑。 ","fans_total":"3336","web_url":"http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt"}] * serial_list : ["430","431","434","435","437","438","444","439","445"] */ private String id; private String serial_id; private String number; private String title; private String excerpt; private String read_num; private String maketime; private String start_video; private AuthorBeanX author; private boolean has_audio; private List<AuthorListBeanX> author_list; private List<String> serial_list; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getSerial_id() { return serial_id; } public void setSerial_id(String serial_id) { this.serial_id = serial_id; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getExcerpt() { return excerpt; } public void setExcerpt(String excerpt) { this.excerpt = excerpt; } public String getRead_num() { return read_num; } public void setRead_num(String read_num) { this.read_num = read_num; } public String getMaketime() { return maketime; } public void setMaketime(String maketime) { this.maketime = maketime; } public String getStart_video() { return start_video; } public void setStart_video(String start_video) { this.start_video = start_video; } public AuthorBeanX getAuthor() { return author; } public void setAuthor(AuthorBeanX author) { this.author = author; } public boolean isHas_audio() { return has_audio; } public void setHas_audio(boolean has_audio) { this.has_audio = has_audio; } public List<AuthorListBeanX> getAuthor_list() { return author_list; } public void setAuthor_list(List<AuthorListBeanX> author_list) { this.author_list = author_list; } public List<String> getSerial_list() { return serial_list; } public void setSerial_list(List<String> serial_list) { this.serial_list = serial_list; } public static class AuthorBeanX { /** * user_id : 4814710 * user_name : 姚佳黛 * desc : 喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。 * wb_name : * is_settled : 0 * settled_type : 0 * summary : 学医的见过手术室血肉横飞的文字编辑。 * fans_total : 3336 * web_url : http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt */ private String user_id; private String user_name; private String desc; private String wb_name; private String is_settled; private String settled_type; private String summary; private String fans_total; private String web_url; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } } public static class AuthorListBeanX { /** * user_id : 4814710 * user_name : 姚佳黛 * desc : 喜欢码字儿的精分水瓶座菇凉,脑洞和食量一样大。过气网络小说作者,有一个公众号:头上没有草原的茸茸。 * wb_name : * is_settled : 0 * settled_type : 0 * summary : 学医的见过手术室血肉横飞的文字编辑。 * fans_total : 3336 * web_url : http://image.wufazhuce.com/FoREns_Rl0UOQCYzdBuMAxX239Dt */ private String user_id; private String user_name; private String desc; private String wb_name; private String is_settled; private String settled_type; private String summary; private String fans_total; private String web_url; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } } } public static class QuestionBean { /** * question_id : 1888 * question_title : 我们能为想自杀的人做点什么? * answer_title : * answer_content : 不要对一个没有双腿的人说奔跑是一件多么轻松的事情。 * question_makettime : 2017-10-19 06:00:00 * start_video : * author_list : [{"user_id":"7834279","user_name":"露易莎大能个儿","desc":"你想看到什么?","wb_name":"@露易莎大能个儿","is_settled":"0","settled_type":"0","summary":"朝阳区唯一的精灵。","fans_total":"680","web_url":"http://image.wufazhuce.com/FjREAxQyRS8OCKo9VJ1pmMFWCEKA"}] * asker_list : [{"user_id":"0","user_name":"高高","web_url":"http://image.wufazhuce.com/placeholder-author-avatar.png","summary":"","desc":"","is_settled":"","settled_type":"","fans_total":"","wb_name":""}] */ private String question_id; private String question_title; private String answer_title; private String answer_content; private String question_makettime; private String start_video; private List<AuthorListBeanXX> author_list; private List<AskerListBean> asker_list; public String getQuestion_id() { return question_id; } public void setQuestion_id(String question_id) { this.question_id = question_id; } public String getQuestion_title() { return question_title; } public void setQuestion_title(String question_title) { this.question_title = question_title; } public String getAnswer_title() { return answer_title; } public void setAnswer_title(String answer_title) { this.answer_title = answer_title; } public String getAnswer_content() { return answer_content; } public void setAnswer_content(String answer_content) { this.answer_content = answer_content; } public String getQuestion_makettime() { return question_makettime; } public void setQuestion_makettime(String question_makettime) { this.question_makettime = question_makettime; } public String getStart_video() { return start_video; } public void setStart_video(String start_video) { this.start_video = start_video; } public List<AuthorListBeanXX> getAuthor_list() { return author_list; } public void setAuthor_list(List<AuthorListBeanXX> author_list) { this.author_list = author_list; } public List<AskerListBean> getAsker_list() { return asker_list; } public void setAsker_list(List<AskerListBean> asker_list) { this.asker_list = asker_list; } public static class AuthorListBeanXX { /** * user_id : 7834279 * user_name : 露易莎大能个儿 * desc : 你想看到什么? * wb_name : @露易莎大能个儿 * is_settled : 0 * settled_type : 0 * summary : 朝阳区唯一的精灵。 * fans_total : 680 * web_url : http://image.wufazhuce.com/FjREAxQyRS8OCKo9VJ1pmMFWCEKA */ private String user_id; private String user_name; private String desc; private String wb_name; private String is_settled; private String settled_type; private String summary; private String fans_total; private String web_url; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } } public static class AskerListBean { /** * user_id : 0 * user_name : 高高 * web_url : http://image.wufazhuce.com/placeholder-author-avatar.png * summary : * desc : * is_settled : * settled_type : * fans_total : * wb_name : */ private String user_id; private String user_name; private String web_url; private String summary; private String desc; private String is_settled; private String settled_type; private String fans_total; private String wb_name; public String getUser_id() { return user_id; } public void setUser_id(String user_id) { this.user_id = user_id; } public String getUser_name() { return user_name; } public void setUser_name(String user_name) { this.user_name = user_name; } public String getWeb_url() { return web_url; } public void setWeb_url(String web_url) { this.web_url = web_url; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getIs_settled() { return is_settled; } public void setIs_settled(String is_settled) { this.is_settled = is_settled; } public String getSettled_type() { return settled_type; } public void setSettled_type(String settled_type) { this.settled_type = settled_type; } public String getFans_total() { return fans_total; } public void setFans_total(String fans_total) { this.fans_total = fans_total; } public String getWb_name() { return wb_name; } public void setWb_name(String wb_name) { this.wb_name = wb_name; } } } } }——————————————————————————————————————————————————JsonDao
——————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; /** * @author Dash * @date 2017/10/20 * @description: */ public class JsonDao { private MyHelper myHelper; public JsonDao(Context context) { myHelper = new MyHelper(context); } /** * 插入数据的操作 */ public void insertJson(String json,String url){ SQLiteDatabase database = myHelper.getWritableDatabase(); //现根据url删除json database.delete("jsoncache","url = ?",new String[]{url}); //再去添加 ContentValues values = new ContentValues(); values.put("json",json); values.put("url",url); database.insert("jsoncache",null,values); //关闭 database.close(); } /** * 查询数据库的操作....根据传入url获取存的json字符串 */ public String getJson(String url){ SQLiteDatabase writableDatabase = myHelper.getWritableDatabase(); Cursor cursor = writableDatabase.query("jsoncache", new String[]{"json"}, "url = ?", new String[]{url}, null, null, null); if (cursor.moveToNext()){ String json = cursor.getString(cursor.getColumnIndex("json")); return json; } return null; } }——————————————————————————————————————————————————MyHelper
——————————————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.dao; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * @author Dash * @date 2017/10/20 * @description: */ public class MyHelper extends SQLiteOpenHelper { public MyHelper(Context context) { super(context, "bawei.db", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { //创建表 sqLiteDatabase.execSQL("create table jsoncache(id integer primary key autoincrement,json text not null,url text not null)"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }————————————————————————————————————————————————JsonCallBack
——————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.inter; /** * @author Dash * @date 2017/10/18 * @description: */ public interface JsonCallBack { public void getJsonString(String json); }————————————————————————————————————————————————ImageLoaderUtil
————————————————————————————————————————————————-package news1510a.bawei.com.a16_pulltorefresh_demo.util; import android.content.Context; import android.graphics.Bitmap; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; import com.nostra13.universalimageloader.utils.StorageUtils; import java.io.File; import news1510a.bawei.com.a16_pulltorefresh_demo.R; /** * @author Dash * @date 2017/10/10 * @description: */ public class ImageLoaderUtil { /** * 对imageLoader进行配置的方法 * @param context 上下文 */ public static void init(Context context) { File cacheDir = StorageUtils.getCacheDirectory(context); //指定默认的硬盘(sd卡)的缓存文件夹路径 /** * 可以自己创建一个sd下面的文件夹作为硬盘缓存的路径 */ File file = new File(Environment.getExternalStorageDirectory(),"image"); if (! file.exists()){ file.mkdirs(); } //1.创建一个ImageLoaderConfiguration,,,图片加载器的配置对象 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPoolSize(3) // default 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() //1 TB = 1024GB 1G=1024MB 1M = 1024KB 1KB = 1024BYTE //LruMemoryCache,,lru最近最少使用算法...内部维护的是LinkedHashMap,,当一张图片最近很少使用的时候会从mao集合里面移除 .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //指定内存缓存的大小,,2M,,可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .memoryCacheSizePercentage(13) // default //指定硬盘/磁盘缓存的路径 .diskCache(new UnlimitedDiskCache(cacheDir)) // default 可以自定义缓存路径 .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .diskCacheFileCount(100) // 可以缓存的文件数量 .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() // 打印debug log .build(); //开始构建 //2.对上面配置对象的初始化 ImageLoader.getInstance().init(config); } /** * 默认的展示图片的选项 * * @return */ public static DisplayImageOptions getDefaultOption() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片 .resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位 .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中 .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中 .considerExifParams(true) // default .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) // default 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型 .displayer(new SimpleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20) .build(); return options; } /** * 展示圆角的选项 * @return */ public static DisplayImageOptions getRoundOption() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片 .resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位 .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中 .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中 .considerExifParams(true) // default .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) // default 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型 .displayer(new RoundedBitmapDisplayer(20)) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20) .build(); return options; } /** * 展示圆形的选项 * @return */ public static DisplayImageOptions getCircleOption() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片 .showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片 .showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片 .resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位 .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中 .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中 .considerExifParams(true) // default .imageScaleType(ImageScaleType.EXACTLY_STRETCHED) // default 设置图片以如何的编码方式显示 .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型 .displayer(new CircleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20) .build(); return options; } }——————————————————————————————————————————NetDataUtil
——————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.util; import android.content.Context; import android.os.AsyncTask; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import news1510a.bawei.com.a16_pulltorefresh_demo.inter.JsonCallBack; /** * @author Dash * @date 2017/10/18 * @description: */ public class NetDataUtil { /** * 获取网络数据的方法 * @param path */ public static void getData(final String path, Context context, final JsonCallBack callBack){ if (NetWorkUtil.isConn(context)){ AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { 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 = StringUtil.streamToString(inputStream,"utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { //通过接口把json格式的字符串传递回去.... callBack.getJsonString(s); } }; asyncTask.execute(); }else { NetWorkUtil.showNoNetWorkDlg(context); } } }——————————————————————————————————————————————NetWorkUtil
————————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.util; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import news1510a.bawei.com.a16_pulltorefresh_demo.R; /** * @author Dash * @date 2017/9/27 * @description: * * 如果要使用网络状态的判断,需要权限....<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> */ public class NetWorkUtil { /** * 这个方法是判断网络状态是否可用的 * @param context * @return */ public static boolean isConn(Context context){ boolean bisConnFlag=false; //1.获取网络连接的管理对象 ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); //2.通过管理者对象拿到网络的信息 NetworkInfo network = conManager.getActiveNetworkInfo(); if(network!=null){ //3.网络状态是否可用的返回值 bisConnFlag=network.isAvailable(); } return bisConnFlag; } /** * 如果没有网络 弹出dialog对话框,,,是否进入设置网络的页面 * @param context */ public static void showNoNetWorkDlg(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.mipmap.ic_launcher) // .setTitle("警告") // .setMessage("当前无网络,是否去设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 跳转到系统的网络设置界面 Intent intent = null; // 先判断当前系统版本 if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上 intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); }else{ intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings"); } context.startActivity(intent); } }).setNegativeButton("取消", null).show(); } }————————————————————————————————————————————StringUtil
——————————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; /** * @author Dash * @date 2017/10/16 * @description: */ public class StringUtil { /** * 把一个字节流转成字符串 * * @param inputStream * @param charset * @return */ public static 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; } }————————————————————————————————————————————MyListView
——————————————————————————————————————————————————package news1510a.bawei.com.a16_pulltorefresh_demo.view; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * @author Dash * @date 2017/10/19 * @description: * * 参考博客地址:http://blog.csdn.net/zhaokaiqiang1992/article/details/38585547 */ public class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 重新计算高度 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } /* @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); }*/ }————————————————————————————————————————
item_gridviewlayout.xml
——————————————————————————————————————————-<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/grid_image" android:src="@mipmap/ic_launcher" android:layout_width="100dp" android:layout_height="100dp" /> <TextView android:id="@+id/grid_text" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>——————————————————————————————————————
item_image_layout.xml
————————————————————————————————————————<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:padding="10dp" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text_title" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <ImageView android:id="@+id/image_view" android:layout_width="100dp" android:layout_height="100dp" /> </LinearLayout>——————————————————————————————————
item_text_layout.xml
————————————————————————————————————————————<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:padding="10dp" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>————————————————————————————————————————
权限
————————————————————————————————————<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
pulltorefresh_demo2
最新推荐文章于 2021-12-02 16:02:02 发布