base
http
Api
package com.example.lianxi12_13.base.https; import com.example.lianxi12_13.entity.LoginEntity; import com.example.lianxi12_13.entity.RegisterEntity; import com.example.lianxi12_13.entity.VideoEntity; import io.reactivex.Observable; import okhttp3.RequestBody; import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.POST; public interface Api { @POST("/user/loginjson") Observable<LoginEntity> getLoginData(@Body RequestBody body); @POST("/user/register") Observable<RegisterEntity> getRegisterData(@Body RequestBody body); @GET("/video/findVideos?currentPage=5&pageSize=20") Observable<VideoEntity> getVideoData(); }
RetrofitUtils
package com.example.lianxi12_13.base.https; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; public class RetrofitUtils { protected RetrofitUtils() { } private static RetrofitUtils retrofitUtils; private Retrofit retrofit; public static RetrofitUtils getInstance() { if(retrofitUtils == null) { retrofitUtils = new RetrofitUtils(); } return retrofitUtils; } public Retrofit getRetrofit() { if(retrofit == null) { retrofit = createRetrofit(); } return retrofit; } private Retrofit createRetrofit() { OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) .build(); retrofit = new Retrofit.Builder() .client(okHttpClient) .baseUrl("http://10.161.9.80:7012/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); return retrofit; } }
baseModel
baseModel
package com.example.lianxi12_13.base.baseModel; import com.example.lianxi12_13.base.https.Api; import com.example.lianxi12_13.base.https.RetrofitUtils; public class BaseModel { protected Api api; public BaseModel() { api = RetrofitUtils.getInstance().getRetrofit().create(Api.class); } }
baseviewmodel
BaseViewModel
package com.example.lianxi12_13.base.baseViewModel; import androidx.lifecycle.ViewModel; import com.example.lianxi12_13.base.baseModel.BaseModel; public abstract class BaseViewModel <BM extends BaseModel> extends ViewModel { protected BM mBaseModel; public BaseViewModel() { mBaseModel = createModel(); } public abstract BM createModel(); }
baseview
BaseActivity
package com.example.lianxi12_13.base.baseView; import android.os.Bundle; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.databinding.ViewDataBinding; import androidx.lifecycle.ViewModelProvider; import com.example.lianxi12_13.base.baseViewModel.BaseViewModel; public abstract class BaseActivity <VDB extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity { protected VDB mViewDataBind; protected VM mViewModel; protected abstract Class<VM> getViewModel(); public abstract int bindLayout(); public abstract void initData(); public abstract void initView(); public abstract void handObserver(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mViewDataBind = DataBindingUtil.setContentView(this,bindLayout()); mViewModel = new ViewModelProvider(this).get(getViewModel()); initData(); initView(); handObserver(); } }
BaseFragment
package com.example.lianxi12_13.base.baseView; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.databinding.DataBindingUtil; import androidx.databinding.ViewDataBinding; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider; import com.example.lianxi12_13.base.baseViewModel.BaseViewModel; public abstract class BaseFragment <VDB extends ViewDataBinding ,VM extends BaseViewModel> extends Fragment { protected VDB mViewDataBind; protected VM mViewModel; protected abstract Class<VM> getViewModel(); public abstract int bindLayout(); public abstract void initView(); public abstract void initData(); public abstract void handObserver(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); mViewDataBind = DataBindingUtil.inflate(inflater,bindLayout(),container,false); mViewModel = new ViewModelProvider(getActivity()).get(getViewModel()); initData(); initView(); handObserver(); return mViewDataBind.getRoot(); } }