封装Retrofit

public interface ServerApi {
    @GET(UrlApi.URL)
    Call<LogBean> logBeanCall();
}
/
public class UrlApi {
    public static final String HOST_URL="http://gank.io/api/data/Android/";
    public static final String URL="10/1";
}
//封装
public class RetrofitHepler {
    public static OkHttpClient okHttpClient;
    public static ServerApi serverApi;
    static {
        initOkHttpClent();
    }
    //初始化OkHttpClient
    private static void initOkHttpClent() {
        if(okHttpClient == null){
            synchronized (RetrofitHepler.class){
                if(okHttpClient == null){
                    okHttpClient=new OkHttpClient();
                }
            }
        }
    }
    public static ServerApi getServerApi(){
        if(serverApi == null){
            synchronized (ServerApi.class){
                serverApi=OnCreatApi(ServerApi.class,UrlApi.HOST_URL);
            }
        }
        return serverApi;
    }
    //定义方法初始化ServerApi
    public static<T> T OnCreatApi(Class<T> tClass,String url)
    {
        Retrofit retrofit=new Retrofit
                .Builder().baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        return retrofit.create(tClass);
    }

}
//底部导航
public class MainActivity extends AppCompatActivity {

    private BottomTabBar mb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mb=(BottomTabBar)findViewById(R.id.bottom_tab_bar);
        mb.init(getSupportFragmentManager())
                .setImgSize(50,50)
                .setFontSize(8)
                .setTabPadding(4,6,10)
                .setChangeColor(Color.RED,Color.DKGRAY)
                .addTabItem("月光茶人",R.drawable.shopcar, OneFragment.class)
                .addTabItem("优惠",R.drawable.shopcart_add_red, TwoFragment.class)
                .addTabItem("购物车",R.drawable.xx, ThreeFragment.class)
                .addTabItem("我的",R.drawable.shopcart_minus_red, FourFragment.class)
                .isShowDivider(true);



    }

}
//MainActivity布局
 
<com.hjm.bottomtabbar.BottomTabBar
    android:id="@+id/bottom_tab_bar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
</com.hjm.bottomtabbar.BottomTabBar>
//FragmentOne展示数据
public class OneFragment extends Fragment {
    private RecyclerView mRv;
    ServerApi serverApi;
    RecAdapter adapter;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = View.inflate(getContext(), R.layout.onefragmentlayout, null);
        mRv=inflate.findViewById(R.id.rv);
        mRv.setLayoutManager(new LinearLayoutManager(getActivity()));
        //创建ServerApi对象
        serverApi = RetrofitHepler.getServerApi();
        Call<LogBean> logBeanCall=serverApi.logBeanCall();
        logBeanCall.enqueue(new Callback<LogBean>() {
            @Override
            public void onResponse(Call<LogBean> call, Response<LogBean> response) {
                //请求成功
                final LogBean logBean = response.body();
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //实例化适配器
                        adapter = new RecAdapter(logBean.getResults(), getActivity());
                        mRv.setAdapter(adapter);
                    }
                });
            }

            @Override
            public void onFailure(Call<LogBean> call, Throwable t) {

            }
        });
        return  inflate;
    }

}
//适配器
public class RecAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    List<LogBean.ResultsBean> list;
    Context context;

    public RecAdapter(List<LogBean.ResultsBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //加载视图
        View view=View.inflate(context, R.layout.iten_rec,null);
        return new MyViewHolder(view);
    }
    class MyViewHolder extends RecyclerView.ViewHolder
    {
        SimpleDraweeView img;
        TextView name;
        TextView msg;
        TextView time;
        public MyViewHolder(View itemView) {
            super(itemView);
            //初始化控件
            img=itemView.findViewById(R.id.sdv);
            name=itemView.findViewById(R.id.name);
            msg=itemView.findViewById(R.id.msg);
            time=itemView.findViewById(R.id.times);
        }
    }
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
     LogBean.ResultsBean resultsBean=list.get(position);
     MyViewHolder myViewHolder= (MyViewHolder) holder;
       if(resultsBean.getImages()!=null) {
           Uri uri = Uri.parse("http://dynamic-image.yesky.com/740x-/uploadImages/2015/163/50/690V3VHW0P77.jpg");
           DraweeController controller = Fresco.newDraweeControllerBuilder()
                   .setUri(uri)
                   .setAutoPlayAnimations(true)
                   .build();
           myViewHolder.img.setController(controller);
       }
        myViewHolder.name.setText(resultsBean.getType());
        myViewHolder.msg.setText(resultsBean.getDesc());
        myViewHolder.time.setText(resultsBean.getPublishedAt()+"");
    }

    @Override
    public int getItemCount() {
        return list.size();
    }
}
//Fresc加载图片App
public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
//item布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:id="@+id/sdv"
            fresco:placeholderImage="@mipmap/ic_launcher"/>
              <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/name"/>
          </LinearLayout>
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textSize="16sp"
              android:id="@+id/msg"/>
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/times"/>

      </LinearLayout>

//依赖
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'
compile 'org.greenrobot:greendao:3.2.0'
compile 'org.greenrobot:eventbus:3.1.1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
//butterknife依赖
compile 'com.jakewharton:butterknife:8.8.1'
compile 'com.hjm:BottomTabBar:1.0.0'
compile 'com.facebook.fresco:fresco:0.11.0'





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值