當前位置:
首頁 >
(仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据
發布時間:2025/3/20
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
(仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 父類BaseFragment創建,用retrofit和gson獲取并解析服務器端數據
- 效果展示
- 創建父類BaseFragment解決代碼重復問題
- 用retrofit和gson獲取并解析服務器端數據
- 前期準備
- 導入依賴
- 獲取網絡權限
- 具體實現
- 創建Api,retrofit方法與注解實現類
- 復制服務端數據,利用GsonFormat快速創建Bean類
- 在首頁Fragment編寫相應代碼
父類BaseFragment創建,用retrofit和gson獲取并解析服務器端數據
效果展示
創建父類BaseFragment解決代碼重復問題
在昨天的開發中,利用了判斷成員變量View是否為空解決數據丟失問題,ViewGroup的remove來解決重用parent問題。而這是每個Fragment都會產生的問題,每個都有相同的代碼處理,這樣不好。所以創建了一個所有Fragment界面的父類來解決這個問題
BaseFragment
所有Fragment頁面繼承BaseFragment 并重寫getMyView()方法
import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;import com.xzit.fragment.BaseFragment;public class Page1Fragment extends BaseFragment {@Overrideprotected View getMyView() {TextView textView= new TextView(getActivity());textView.setBackgroundColor(Color.GRAY);textView.setText("北京");textView.setTextSize(60);textView.setGravity(Gravity.CENTER);return textView;} }用retrofit和gson獲取并解析服務器端數據
前期準備
導入依賴
//配置retrofit
implementation ‘com.squareup.retrofit2:retrofit:2.1.0’
implementation ‘com.squareup.retrofit2:converter-gson:2.1.0’
//gson
implementation ‘com.google.code.gson:gson:2.8.4’
獲取網絡權限
具體實現
創建Api,retrofit方法與注解實現類
復制服務端數據,利用GsonFormat快速創建Bean類
在首頁Fragment編寫相應代碼
HomeFragment
import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; 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.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView;import com.example.administrator.zhjrtt.R; import com.google.gson.Gson; import com.xzit.bean.ResponseDate; import com.xzit.fragment.sub.Page1Fragment; import com.xzit.fragment.sub.Page2Fragment; import com.xzit.fragment.sub.Page3Fragment; import com.xzit.fragment.sub.Page4Fragment; import com.xzit.fragment.sub.Page5Fragment; import com.xzit.net.MyApi;import java.util.ArrayList; import java.util.List;import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory;public class HomeFragment extends BaseFragment {class MyPagerAdapter extends FragmentPagerAdapter{//創建集合存放頁面private List<ResponseDate.DataBean> dates = new ArrayList<>();//創建集合存放指示器標題private List<Fragment> fragments = new ArrayList<>();public MyPagerAdapter(FragmentManager fm,List<ResponseDate.DataBean> list) {super(fm);//將一個集合中所有的數據加到當前的datasdates.addAll(list);for (ResponseDate.DataBean item:dates) {fragments.add(new Page1Fragment());}}@Nullable@Overridepublic CharSequence getPageTitle(int position) {//返回指定位置標題內容return dates.get(position).title;}@Overridepublic Fragment getItem(int i) {//返回頁面內容return fragments.get(i);}@Overridepublic int getCount() {//返回頁面數量return dates.size();}}MyPagerAdapter myPagerAdapter;TabLayout tabLayout;ViewPager viewPager;@Overrideprotected View getMyView() {//1.布局viewpager//2.加載View view = View.inflate(getActivity(),R.layout.fragment_home,null);viewPager = view.findViewById(R.id.vp_home);//3.定義適配器//4.初始化設置適配器//5.初始化指示器tabLayout = view.findViewById(R.id.tl_home);//向服務端獲取數據getDate();return view;}private void getDate() {//1.創建retrofit對象Retrofit retrofit = new Retrofit.Builder().baseUrl("http://192.168.31.114:8080/jrtt/")//會將地址和方法上的注解進行拼接.addConverterFactory(GsonConverterFactory.create(new Gson()))//添加一個轉換工廠,調用Gson對象,將json數據轉換為java對象.build();//執行創建//2:重點是發請求獲取服務的數據MyApi myApi = retrofit.create(MyApi.class);//3:將json數據處理一下,使用插件gsonformat生成javaBeanmyApi.getType().enqueue(new Callback<ResponseDate>() {@Overridepublic void onResponse(Call<ResponseDate> call, Response<ResponseDate> response) {//處理獲取服務端數據成功ResponseDate responseDate = response.body();//定義適配器//初始化設置適配器myPagerAdapter = new MyPagerAdapter(getFragmentManager(),responseDate.data);viewPager.setAdapter(myPagerAdapter);//設置指示器tabLayout.setupWithViewPager(viewPager);}@Overridepublic void onFailure(Call<ResponseDate> call, Throwable t) {//處理獲取服務端數據失敗}});} }總結
以上是生活随笔為你收集整理的(仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (仿头条APP项目)3.二级页面首页的V
- 下一篇: (仿头条APP项目)5.列表页面设计实现