本文将带你了解Android应用开发MVP模式实现Android的简单购物车(代码教程),希望本文对大家学Android有所帮助。
retrofit+rxjava思想,并进行简单的封装.
效果图:
V层:调用P层方法
P层:连接V层和M层,并在V层关闭视图的时候实现解耦,调用M层方法获取数据返回给V层
M层:获取数据,供P层获取调用
RetrofitUtil工具类:
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 RetrofitUtil {
private static RetrofitUtil instener;
private OkHttpClient okHttpClient;
private Retrofit retrofit;
private RetrofitUtil() {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.connectTimeout(5, TimeUnit.SECONDS)
.writeTimeout(5, TimeUnit.SECONDS)
.readTimeout(5, TimeUnit.SECONDS)
.addInterceptor(logging)
.build();
retrofit = new Retrofit.Builder()
.baseUrl(Api.BASEURL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build();
}
public static synchronized RetrofitUtil getInstener() {
synchronized (RetrofitUtil.class) {
if (instener == null) {
instener = new RetrofitUtil();
}
}
return instener;
}
public ApiService getCreate() {
return retrofit.create(ApiService.class);
}
}
ApiService:
import com.bwei.jiangbikuan.day0629.model.bean.CatagoryBean;
import com.bwei.jiangbikuan.day0629.model.bean.GetCartsBean;
import com.bwei.jiangbikuan.day0629.model.bean.ProductCatagoryBean;
import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
public interface ApiService {
@GET("product/getCatagory")
Observable getCatagory();
@FormUrlEncoded
@POST("product/getProductCatagory")
Observable getProductCatagory(@Field("cid") String cid);
@FormUrlEncoded
@POST("product/getCarts")
Observable getCarts(@Field("uid") String uid);
}
分类页面:
V层:
mainactivity:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private FrameLayout myfl;
private RadioGroup rg;
private RadioButton rbClass;
private RadioButton rbShop;
private FragmentManager fragmentManager;
private ClassFragment classFragment;
private ShopFragment shopFragment;
private int classFragmentcommit;
private int shopFragmentcommit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//获得fragment管理者
fragmentManager = getSupportFragmentManager();
//创建两个模块fragment对象
classFragment = new ClassFragment();
shopFragment = new ShopFragment();
//设置默认显示fragment
classFragmentcommit = fragmentManager.beginTransaction().replace(R.id.myfl, classFragment).commit();
}
private void initView() {
myfl = (FrameLayout) findViewById(R.id.myfl);
rg = (RadioGroup) findViewById(R.id.rg);
rbClass = (RadioButton) findViewById(R.id.rb_class);
rbShop = (RadioButton) findViewById(R.id.rb_shop);
rbShop.setOnClickListener(this);
rbClass.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.rb_class:
if (classFragmentcommit==0){
fragmentManager.beginTransaction().replace(R.id.myfl, classFragment).commit();
Toast.makeText(this, "分类创建", Toast.LENGTH_SHORT).show();
}else{
fragmentManager.beginTransaction().show(classFragment);
Toast.makeText(this, "分类显示", Toast.LENGTH_SHORT).show();
}
break;
case R.id.rb_shop:
if (shopFragmentcommit==0) {
shopFragmentcommit = fragmentManager.beginTransaction().replace(R.id.myfl, shopFragment).commit();
Toast.makeText(this, "购物车创建", Toast.LENGTH_SHORT).show();
}else{
fragmentManager.beginTransaction().show(shopFragment);
Toast.makeText(this, "购物车显示", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
ClassFragment :
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!