抽屉布局+Fragment+TabLayout上导航栏+PullToRefreshListView+轮播图+PullToRefreshGridView
来源:互联网 发布:linux 社区 编辑:程序博客网 时间:2024/05/22 07:00
< pager.setOffscreenPageLimit(4);解决解决滑动事件与轮播图事件冲突> <pager.setOffscreenPageLimit(list.size());解决后面数据出不来问题> <-----布局---------> <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <!--主内容区域在下面--> <RelativeLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" /> <RadioGroup android:id="@+id/group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentBottom="true"> <RadioButton android:id="@+id/radio_01" android:layout_width="0dp" android:layout_weight="1" android:padding="15dp" android:layout_height="wrap_content" android:button="@null" android:gravity="center" android:checked="true" android:textColor="@color/select_che" android:text="新闻"/> <RadioButton android:id="@+id/radio_02" android:layout_width="0dp" android:layout_weight="1" android:padding="15dp" android:layout_height="wrap_content" android:button="@null" android:gravity="center" android:textColor="@color/select_che" android:text="网格"/> <RadioButton android:id="@+id/radio_03" android:layout_width="0dp" android:layout_weight="1" android:padding="15dp" android:layout_height="wrap_content" android:button="@null" android:gravity="center" android:textColor="@color/select_che" android:text="娱乐"/> <RadioButton android:id="@+id/radio_04" android:layout_width="0dp" android:layout_weight="1" android:padding="15dp" android:layout_height="wrap_content" android:button="@null" android:gravity="center" android:textColor="@color/select_che" android:text="登录"/> </RadioGroup> </RelativeLayout> <!--抽屉显示的内容--> <LinearLayout android:background="#ffffff" android:layout_gravity="left" android:id="@+id/linear_drawer" android:orientation="vertical" android:layout_width="200dp" android:layout_height="match_parent"> <ImageView android:layout_gravity="center_horizontal" android:src="@mipmap/ic_launcher" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:text="未登录" android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:padding="20dp" android:id="@+id/linear_01" android:orientation="horizontal" android:layout_width="200dp" android:layout_marginTop="50dp" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="20dp" android:layout_height="20dp" /> <TextView android:text="QQ登录" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:padding="20dp" android:id="@+id/linear_02" android:orientation="horizontal" android:layout_width="200dp" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="20dp" android:layout_height="20dp" /> <TextView android:text="微信登录" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:padding="20dp" android:id="@+id/linear_03" android:orientation="horizontal" android:layout_width="200dp" android:layout_height="wrap_content"> <ImageView android:src="@mipmap/ic_launcher" android:layout_width="20dp" android:layout_height="20dp" /> <TextView android:text="微博登录" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> </android.support.v4.widget.DrawerLayout> <-----TabLayout-----> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <android.support.design.widget.TabLayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="50dp" app:tabGravity="center" app:tabIndicatorColor="#ff0000" app:tabMode="scrollable" app:tabSelectedTextColor="#ff0000" app:tabTextColor="#00ff00"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_below="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </RelativeLayout> <-----PullToRefreshListView-----> <?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"> <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> <------PullToRefreshGridView------> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="200dp"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linear_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/viewpager" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" android:orientation="horizontal"> </LinearLayout> <com.handmark.pulltorefresh.library.PullToRefreshGridView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="wrap_content" android:layout_below="@+id/viewpager" android:id="@+id/refresh_grid_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF" android:numColumns="2" /> </RelativeLayout> <----主页面------> package com.example.adminjs.zongheti; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioGroup; import android.widget.RelativeLayout; import android.widget.Toast; import com.example.adminjs.zongheti.Adapter.MaAdapter; import com.example.adminjs.zongheti.Fragment.Fragment_01; import com.example.adminjs.zongheti.Fragment.Fragment_02; import com.example.adminjs.zongheti.Fragment.Fragment_03; import com.example.adminjs.zongheti.Fragment.Fragment_04; import java.util.ArrayList; import java.util.List; public class MainActivity extends FragmentActivity implements View.OnClickListener { private DrawerLayout drawerLayout; private RelativeLayout relativeLayout; private LinearLayout linearLayout; private LinearLayout linear_01; private LinearLayout linear_02; private LinearLayout linear_03; private LinearLayout linear_04; private ViewPager pager; private RadioGroup group; private List<Fragment> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); relativeLayout = (RelativeLayout)findViewById(R.id.frame_layout); linearLayout = (LinearLayout)findViewById(R.id.linear_drawer); pager = (ViewPager)findViewById(R.id.pager); group = (RadioGroup)findViewById(R.id.group); list = new ArrayList<>(); list.add(new Fragment_01()); list.add(new Fragment_02()); list.add(new Fragment_03()); list.add(new Fragment_04()); MaAdapter maAdapter = new MaAdapter(getSupportFragmentManager(), list); pager.setAdapter(maAdapter); linear_01 = (LinearLayout) findViewById(R.id.linear_01); linear_02 = (LinearLayout) findViewById(R.id.linear_02); linear_03 = (LinearLayout) findViewById(R.id.linear_03); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { group.check(group.getChildAt(position).getId()); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i){ case R.id.radio_01: pager.setCurrentItem(0,false); break; case R.id.radio_02: pager.setCurrentItem(1,false); break; case R.id.radio_03: pager.setCurrentItem(2,false); break; case R.id.radio_04: pager.setCurrentItem(3,false); break; } } }); pager.setOffscreenPageLimit(4); linear_01.setOnClickListener(this); linear_02.setOnClickListener(this); linear_03.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.linear_01: Toast.makeText(MainActivity.this,"QQ登录",Toast.LENGTH_SHORT).show(); drawerLayout.closeDrawers(); break; } switch (view.getId()){ case R.id.linear_02: Toast.makeText(MainActivity.this,"微信登录",Toast.LENGTH_SHORT).show(); drawerLayout.closeDrawers(); break; } switch (view.getId()){ case R.id.linear_03: Toast.makeText(MainActivity.this,"微博登录",Toast.LENGTH_SHORT).show(); drawerLayout.closeDrawers(); break; } } } <------TabLayout-------> package com.example.adminjs.zongheti.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.adminjs.zongheti.NewsFragment; import com.example.adminjs.zongheti.R; import java.util.ArrayList; import java.util.List; /** * Created by Adminjs on 2017/9/20. */ public class Fragment_01 extends Fragment{ private TabLayout tabLayout; private ViewPager pager; private List<String> list; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_01, container, false); tabLayout = (TabLayout)view.findViewById(R.id.tab_layout); pager = (ViewPager)view.findViewById(R.id.view_pager); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); list = new ArrayList<>(); list.add("福利"); list.add("Android"); list.add("IOS"); list.add("休息视频"); list.add("拓展资源"); list.add("前段"); list.add("all"); /** * viewPager需要设置容器中装的页面数量,默认是三页,,,否则在切换的时候前面的再切换回来就不显示了 */ pager.setOffscreenPageLimit(list.size()); //设置适配器 pager.setAdapter(new FragmentPagerAdapter(getFragmentManager()) { @Override public CharSequence getPageTitle(int position) { //展示的标题 return list.get(position); } @Override public Fragment getItem(int position) { //....fragment集合viewPager使用的时候,fragment是new出来的 NewsFragment newsFragment = new NewsFragment(); Bundle bundle = new Bundle(); //把当前位置的标题传递过去 bundle.putString("name",list.get(position)); newsFragment.setArguments(bundle); return newsFragment; } @Override public int getCount() { return list.size(); } }); //绑定在一起 tabLayout.setupWithViewPager(pager); } } <-------PullToRefreshListView-----> package com.example.adminjs.zongheti; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.example.adminjs.zongheti.Adapter.MaAdapter; import com.example.adminjs.zongheti.Adapter.MyAdapter; 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.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; /** * Created by Adminjs on 2017/9/20. */ public class NewsFragment extends Fragment { private PullToRefreshListView refreshListView; private String param; private String path; private int page_num = 1; private List<DataDataBean.ResultsBean>list = new ArrayList<>(); private MyAdapter myAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_layout, container, false); refreshListView = (PullToRefreshListView) view.findViewById(R.id.refresh_list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); param = bundle.getString("name", "Android"); //请求数据,,,设置适配器 getData(); refreshListView.setMode(PullToRefreshBase.Mode.BOTH); ILoadingLayout startLabels = refreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy( false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //设置监听 refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //上拉加载的时候 page_num加一 page_num ++; getData(); } }); } /** * 获取刷新时的数据...刷新时只访问第一页的数据,,,,刷新的数据需要添加到集合的前边 * * 刷新完成,,设置适配器之后刷新需要停止 */ private void getRefreshData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { String path = "http://gank.io/api/data/"+URLEncoder.encode(param,"utf-8")+"/10/1"; 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 ""; } @Override protected void onPostExecute(String s) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); /** * 判断数据非空 */ if (dataDataBean != null && dataDataBean.getResults() != null){ //数据添加 list.addAll(0,dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshListView.onRefreshComplete(); } } }; asyncTask.execute(); } /** * 这个方法是刚进入界面的时候请求数据,,,,和上拉加载的时候不停的请求数据 * * page_num每次加载的时候会加1,,,这个方法中数据添加在list集合的后面 * * 请求设置适配器之后 刷新停止 */ private void getData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { String path = "http://gank.io/api/data/"+URLEncoder.encode(param,"utf-8")+"/10/"+page_num; 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"); Log.i("YYYYYYY",json); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); /** * 判断数据非空 */ if (dataDataBean != null && dataDataBean.getResults() != null){ //数据添加 list.addAll(dataDataBean.getResults());//拿到的是每一页的数据的集合 //设置适配器 setAdapter(); //刷新停止 refreshListView.onRefreshComplete(); } } }; asyncTask.execute(); } private void setAdapter() { if (myAdapter == null){ myAdapter = new MyAdapter(getActivity(),list); refreshListView.setAdapter(myAdapter); }else { myAdapter.notifyDataSetChanged(); } } 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); } Log.i("HHHHHH",bufferedReader.toString()); bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } } <------轮播图+PullToRefreshGridView> package com.example.adminjs.zongheti; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.example.adminjs.zongheti.Adapter.MaAdapter; import com.example.adminjs.zongheti.Adapter.MyAdapter; 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.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; /** * Created by Adminjs on 2017/9/20. */ public class NewsFragment extends Fragment { private PullToRefreshListView refreshListView; private String param; private String path; private int page_num = 1; private List<DataDataBean.ResultsBean>list = new ArrayList<>(); private MyAdapter myAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_layout, container, false); refreshListView = (PullToRefreshListView) view.findViewById(R.id.refresh_list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); param = bundle.getString("name", "Android"); //请求数据,,,设置适配器 getData(); refreshListView.setMode(PullToRefreshBase.Mode.BOTH); ILoadingLayout startLabels = refreshListView.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy( false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); //设置监听 refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //上拉加载的时候 page_num加一 page_num ++; getData(); } }); } /** * 获取刷新时的数据...刷新时只访问第一页的数据,,,,刷新的数据需要添加到集合的前边 * * 刷新完成,,设置适配器之后刷新需要停止 */ private void getRefreshData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { String path = "http://gank.io/api/data/"+URLEncoder.encode(param,"utf-8")+"/10/1"; 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 ""; } @Override protected void onPostExecute(String s) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); /** * 判断数据非空 */ if (dataDataBean != null && dataDataBean.getResults() != null){ //数据添加 list.addAll(0,dataDataBean.getResults()); //设置适配器 setAdapter(); //停止刷新 refreshListView.onRefreshComplete(); } } }; asyncTask.execute(); } /** * 这个方法是刚进入界面的时候请求数据,,,,和上拉加载的时候不停的请求数据 * * page_num每次加载的时候会加1,,,这个方法中数据添加在list集合的后面 * * 请求设置适配器之后 刷新停止 */ private void getData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { String path = "http://gank.io/api/data/"+URLEncoder.encode(param,"utf-8")+"/10/"+page_num; 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"); Log.i("YYYYYYY",json); return json; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { //解析 Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); /** * 判断数据非空 */ if (dataDataBean != null && dataDataBean.getResults() != null){ //数据添加 list.addAll(dataDataBean.getResults());//拿到的是每一页的数据的集合 //设置适配器 setAdapter(); //刷新停止 refreshListView.onRefreshComplete(); } } }; asyncTask.execute(); } private void setAdapter() { if (myAdapter == null){ myAdapter = new MyAdapter(getActivity(),list); refreshListView.setAdapter(myAdapter); }else { myAdapter.notifyDataSetChanged(); } } 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); } Log.i("HHHHHH",bufferedReader.toString()); bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
阅读全文
0 0
- 抽屉布局+Fragment+TabLayout上导航栏+PullToRefreshListView+轮播图+PullToRefreshGridView
- TabLayout上导航栏+PullToRefreshListView展示数据
- PullToRefreshListView+Tablayout+Fragment+DrawerLayout
- 抽屉布局+PullToRefreshListView展示
- xamarin Tablayout+Viewpager+Fragment顶部导航栏
- kotlin 底部导航栏(tabLayout + fragment)
- TabLayout和ViewPager以及Fragment实现超级简单导航栏
- TabLayout+ViewPager+Fragment实现顶部或底部导航栏
- Tablayout + ViewPager + fragment 实现底部或顶部导航栏
- Android底部和标签导航栏—TabLayout+Fragment
- Android 用 TabLayout + ViewPager + Fragment 实现顶部、底部导航栏
- 结合TabLayout 、ViewPager 、 Fragment 实现顶部导航栏,最实用!!!
- Android中导航栏实现(Fragment+ViewPager+TabLayout)
- 首页、底部导航栏:TabLayout+ViewPager+Fragment使用
- TabLayout + ViewPager + Fragment 实现布局
- TabLayout+ViewPager+Fragment实现底部导航
- TabLayout+ViewPager+Fragment实现底部导航
- TabLayout+Fragment和底部导航联动
- sublime 的安装系列之 注册码与安装 Package Control------tex3
- WebView 生成长图,截图
- 【js初学】9*9乘法表,javascript
- Spring5:@Autowired注解、@Resource注解和@Service注解
- jvm视角看java继承和多态
- 抽屉布局+Fragment+TabLayout上导航栏+PullToRefreshListView+轮播图+PullToRefreshGridView
- mybatis报Could not find result map java.lang.Integer之类的错误
- JavaScript Dom 编程艺术学习笔记之DOM操作
- 【第四周项目1】 建立单链表
- 第四周项目1
- Centos7的Docker容器里部署xwiki
- Xamarin.Forms XAML的辅助功能Code Snippet
- 实现分页功能
- tensowflow报错tensorflow.python.framework.errors_impl.InvalidArgumentError<exception str