RetrofisHttps
package com.bawei.jiejiaqi0404.views;
import com.bawei.jiejiaqi0404.api.Api;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetrofisHttps {
private static RetrofisHttps retrofisHttps;
private final OkHttpClient okHttpClient;
private final Retrofit build;
public static RetrofisHttps getInance(){
if (retrofisHttps == null){
synchronized (RetrofisHttps.class){
if (retrofisHttps == null){
retrofisHttps = new RetrofisHttps();
}
}
}
return retrofisHttps;
}
private RetrofisHttps(){
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.addNetworkInterceptor(httpLoggingInterceptor)
.build();
build = new Retrofit.Builder()
.baseUrl(Api.Api)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
}
public<T> T create(Class<T> tClass){
return build.create(tClass);
}
}
Modle
package com.bawei.jiejiaqi0404.modle;
import com.bawei.jiejiaqi0404.api.ApiService;
import com.bawei.jiejiaqi0404.bean.Bean;
import com.bawei.jiejiaqi0404.callback.CallBack;
import com.bawei.jiejiaqi0404.contract.Contract;
import com.bawei.jiejiaqi0404.views.RetrofisHttps;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.observers.DisposableObserver;
import io.reactivex.schedulers.Schedulers;
public class Modle implements Contract.IModle{
private ApiService apiService;
@Override
public void Modle(final CallBack callBack) {
apiService = RetrofisHttps.getInance().create(ApiService.class);
apiService.fa()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableObserver<Bean>() {
@Override
public void onNext(Bean value) {
callBack.onSuccess(value);
}
@Override
public void onError(Throwable e) {
System.out.println("报错了66666666666666666666666666666666666666666666"+e);
}
@Override
public void onComplete() {
}
});
}
}
自定义View
package com.bawei.jiejiaqi0404.view;
import android.content.Context;
import android.telecom.Call;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bawei.jiejiaqi0404.R;
public class View extends LinearLayout{
public android.view.View view;
public Button jianButton,jiaButton;
public TextView shulTextView;
private int s;
public View(Context context) {
super(context);
}
public View(Context context, AttributeSet attrs) {
super(context, attrs);
view = LayoutInflater.from(context).inflate(R.layout.name2, this);
jianButton = view.findViewById(R.id.jianButton);
jiaButton = view.findViewById(R.id.jiaButton);
shulTextView = view.findViewById(R.id.shulTextView);
s = Integer.parseInt(shulTextView.getText().toString());
jiaButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(android.view.View v) {
s = s + 1;
shulTextView.setText(String.valueOf(s));
CallBackListener.jia(s);
}
});
jianButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(android.view.View v) {
s = s - 1;
if (s < 1){
s = 1;
shulTextView.setText(String.valueOf(s));
}
shulTextView.setText(String.valueOf(s));
CallBackListener.jian(s);
}
});
}
public View(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
CallBackListener CallBackListener;
public void setCallBackListener(View.CallBackListener CallBackListener) {
this.CallBackListener = CallBackListener;
}
public interface CallBackListener{
public void jia(int s);
public void jian(int s);
}
}
子适配器
package com.bawei.jiejiaqi0404.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import com.bawei.jiejiaqi0404.R;
import com.bawei.jiejiaqi0404.bean.Bean;
import com.facebook.drawee.view.SimpleDraweeView;
import java.util.List;
public class ZAdapter extends RecyclerView.Adapter<ZAdapter.ViewHolderz>{
private Context context;
private List<Bean.DataBean.ListBean> list;
public ZAdapter(Context context, List<Bean.DataBean.ListBean> list) {
this.context = context;
this.list = list;
}
@NonNull
@Override
public ZAdapter.ViewHolderz onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.name1, viewGroup, false);
ViewHolderz viewHolderz = new ViewHolderz(view);
return viewHolderz;
}
@Override
public void onBindViewHolder(@NonNull ZAdapter.ViewHolderz viewHolderz, final int i) {
viewHolderz.simpleDraweeView.setImageURI(list.get(i).getDetailUrl());
viewHolderz.zTextView.setText(list.get(i).getTitle());
viewHolderz.zTextView1.setText("优惠价: ¥"+list.get(i).getPrice()+"");
viewHolderz.zdjView.shulTextView.setText(list.get(i).getDefalutNumber()+"");
//避免焦点
viewHolderz.zCheckBox.setOnCheckedChangeListener(null);
//获取现有的状态值
viewHolderz.zCheckBox.setChecked(list.get(i).isCheck());
viewHolderz.zCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
list.get(i).setCheck(isChecked);
ShopCallBackListener.Twocall();
}
});
viewHolderz.zdjView.setCallBackListener(new com.bawei.jiejiaqi0404.view.View.CallBackListener() {
@Override
public void jia(int s) {
list.get(i).setDefalutNumber(s);
ShopCallBackListener.Twocall();
}
@Override
public void jian(int s) {
list.get(i).setDefalutNumber(s);
ShopCallBackListener.Twocall();
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolderz extends RecyclerView.ViewHolder {
private CheckBox zCheckBox;
private SimpleDraweeView simpleDraweeView;
private TextView zTextView,zTextView1;
private final com.bawei.jiejiaqi0404.view.View zdjView;
public ViewHolderz(@NonNull View itemView) {
super(itemView);
zCheckBox = itemView.findViewById(R.id.zCheckBox);
zTextView = itemView.findViewById(R.id.zTextView);
zTextView1 = itemView.findViewById(R.id.zTextView1);
simpleDraweeView = itemView.findViewById(R.id.simpleDraweeView);
zdjView = itemView.findViewById(R.id.zdjView);
}
}
MainCallBackListener ShopCallBackListener;
public void setShopCallBackListener(MainCallBackListener ShopCallBackListener) {
this.ShopCallBackListener = ShopCallBackListener;
}
public interface MainCallBackListener{
public void Twocall();
}
}
父适配器
package com.bawei.jiejiaqi0404.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;
import com.bawei.jiejiaqi0404.R;
import com.bawei.jiejiaqi0404.bean.Bean;
import java.util.List;
public class FAdapter extends RecyclerView.Adapter<FAdapter.ViewHolder> {
private Context context;
private List<Bean.DataBean> data;
private ZAdapter zAdapter;
private List<Bean.DataBean.ListBean> list;
public FAdapter(Context context, List<Bean.DataBean> data) {
this.context = context;
this.data = data;
}
@NonNull
@Override
public FAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.name, viewGroup, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final FAdapter.ViewHolder viewHolder, final int i) {
viewHolder.textView.setText(data.get(i).getSellerName());
viewHolder.zRecyclerView.setLayoutManager(new LinearLayoutManager(context));
list = data.get(i).getList();
zAdapter = new ZAdapter(context,list);
viewHolder.zRecyclerView.setAdapter(zAdapter);
//焦点冲突
viewHolder.checkBox.setOnCheckedChangeListener(null);
//获取现有的状态值
viewHolder.checkBox.setChecked(data.get(i).isCheckr());
//第二个适配器的接口回调
zAdapter.setShopCallBackListener(new ZAdapter.MainCallBackListener() {
@Override
public void Twocall() {
boolean User = true;
for (int j = 0; j < data.get(i).getList().size(); j++){
User = User&data.get(i).getList().get(j).isCheck();
}
viewHolder.checkBox.setChecked(User);
zAdapter.notifyDataSetChanged();
mShopCallBackListener.OneCall();
}
});
viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int j = 0; j < data.get(i).getList().size(); j++){
data.get(i).getList().get(j).setCheck(viewHolder.checkBox.isChecked());
}
data.get(i).setCheckr(viewHolder.checkBox.isChecked());
notifyDataSetChanged();
mShopCallBackListener.OneCall();
}
});
zAdapter.notifyDataSetChanged();
}
@Override
public int getItemCount() {
return data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox checkBox;
private TextView textView;
private RecyclerView zRecyclerView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
checkBox = itemView.findViewById(R.id.checkBox);
textView = itemView.findViewById(R.id.textView);
zRecyclerView = itemView.findViewById(R.id.zRecyclerView);
}
}
//定义接口
private ShopCallBackListener mShopCallBackListener;
public void setmShopCallBackListener(ShopCallBackListener mShopCallBackListener) {
this.mShopCallBackListener = mShopCallBackListener;
}
public interface ShopCallBackListener {
public void OneCall();
}
}
MainActivity
package com.bawei.jiejiaqi0404;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import com.bawei.jiejiaqi0404.adapter.FAdapter;
import com.bawei.jiejiaqi0404.bean.Bean;
import com.bawei.jiejiaqi0404.contract.Contract;
import com.bawei.jiejiaqi0404.presenter.Presenter;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity extends AppCompatActivity implements Contract.IView {
@BindView(R.id.recyclerView)
RecyclerView recyclerView;
@BindView(R.id.qxCheckBox)
CheckBox qxCheckBox;
@BindView(R.id.zjTextView)
TextView zjTextView;
@BindView(R.id.qjsButton)
Button qjsButton;
private Presenter presenter;
private Bean bean;
private FAdapter fAdapter;
private List<Bean.DataBean> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
presenter = new Presenter(this);
presenter.Presenter();
qjsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
});
}
@Override
public void onSuccess(Object retuil) {
bean = (Bean) retuil;
data = bean.getData();
fAdapter = new FAdapter(this, data);
recyclerView.setAdapter(fAdapter);
fAdapter.notifyDataSetChanged();
qxCheckBox.setOnClickListener(null);
qxCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < data.size(); i++){
data.get(i).setCheckr(qxCheckBox.isChecked());
for (int j = 0; j < data.get(i).getList().size(); j++){
data.get(i).getList().get(j).setCheck(qxCheckBox.isChecked());
}
}
fAdapter.notifyDataSetChanged();
ToPrice();
}
});
fAdapter.setmShopCallBackListener(new FAdapter.ShopCallBackListener() {
@Override
public void OneCall() {
boolean FirstOne = true;
for (int i = 0; i < data.size(); i++){
FirstOne = FirstOne&data.get(i).isCheckr();
for (int j = 0; j < data.get(i).getList().size(); j++){
FirstOne = FirstOne&data.get(i).getList().get(j).isCheck();
}
}
qxCheckBox.setChecked(FirstOne);
ToPrice();
}
});
}
private void ToPrice(){
double price = 0;
for (int i = 0; i <data.size() ; i++) {
for (int j = 0; j < data.get(i).getList().size(); j++) {
if(data.get(i).getList().get(j).isCheck()==true){
double price1 = data.get(i).getList().get(j).getPrice();
int defalutNumber = data.get(i).getList().get(j).getDefalutNumber();
double sum = price1*defalutNumber;
price = price+sum;
}
}
}
zjTextView.setText(""+String.valueOf(price));
}
@Override
public void onFiltre(String msg) {
}
}
App
package com.bawei.jiejiaqi0404.app;
import android.app.Application;
import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.common.util.ByteConstants;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
DiskCacheConfig diskCacheConfig =
DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(this.getApplicationContext()
.getCacheDir())
.setBaseDirectoryName("com.bwei.work_three")
.setMaxCacheSize(100 * ByteConstants.MB)
.setMaxCacheSizeOnLowDiskSpace(60 * ByteConstants.MB)
.setMaxCacheSizeOnVeryLowDiskSpace(20 * ByteConstants.MB)
.build();
ImagePipelineConfig build = ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this,build);
}
}
二维码
package com.bawei.jiejiaqi0404;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class Main2Activity extends AppCompatActivity {
@BindView(R.id.Button)
android.widget.Button Button;
@BindView(R.id.Button1)
android.widget.Button Button1;
@BindView(R.id.zx)
ImageView zx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ButterKnife.bind(this);
}
@OnClick({R.id.Button, R.id.Button1})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.Button:
customScan();
break;
case R.id.Button1:
zx.setImageBitmap(encodeAs("sadasdasdasdas"));
break;
}
}
//扫描二维码
public void customScan() {
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.CODE_39);
integrator.setCaptureActivity(ScanActivity.class);
integrator.setPrompt("请扫描二维码");//底部的提示文字,设为""可以置空
integrator.setCameraId(0);//前置或者后置摄像头
integrator.initiateScan();
}
//生成二维码
public Bitmap encodeAs(String str) {
Bitmap bitmap = null;
BitMatrix result = null;
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
result = multiFormatWriter.encode(str, BarcodeFormat.QR_CODE, 200, 200);
// 使用 ZXing Android Embedded 要写的代码
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
bitmap = barcodeEncoder.createBitmap(result);
} catch (WriterException e) {
e.printStackTrace();
} catch (IllegalArgumentException iae) {
return null;
}
return bitmap;
}
@Override
// 通过 onActivityResult的方法获取 扫描回来的 值
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (intentResult != null) {
if (intentResult.getContents() == null) {
Toast.makeText(this, "内容为空", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "扫描成功", Toast.LENGTH_LONG).show();
// ScanResult 为 获取到的字符串
String ScanResult = intentResult.getContents();
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}