仿京东联动

添加依赖

implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'com.squareup.okio:okio:1.12.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.github.bumptech.glide:glide:4.8.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
implementation 'com.github.jwkj:LibZXing:v1.0.4'
implementation 'com.github.xiaohaibin:XBanner:1.6.1'
allprojects {
repositories {
    google()
    jcenter()
    maven {url 'https://jitpack.io'}
}
}

添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>

API

public static final String lefturl="http://172.17.8.100/small/commodity/v1/findFirstCategory";
public static final String Xbanner="http://172.17.8.100/small/commodity/v1/bannerShow";
public static final String Righturl="http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=鞋";

定义接口

interface ShowModel{
    void modelLeftData(String url,NetCallBack netCallBack);
    void modelRightData(String url,NetCallBack netCallBack);
    void getbanner(String url,NetCallBack netCallBack);
}

interface ShowPresenter{
    void presenterLeftData();
    void presenterRightData(int id);
    void getbanner();
}

interface ShowView{
    void viewLeftData(Object o);
    void viewRightData(Object o);
    void getbanner(Object object);
}

interface NetCallBack{
    void onResccuss(Object o);
    void onFail(Exception e);
}

OKGttp

//单利静态
private static OkHttp instance;
private OkHttpClient client;
private Handler handler=new Handler(Looper.getMainLooper());

//单利模式
public static synchronized OkHttp getInstance(){
    if(instance==null){
    instance=new OkHttp();
}
    return instance;

}

public OkHttp(){
    //创建拦截器
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    //使用构造者模式
    client = new OkHttpClient.Builder()
            .connectTimeout(20,TimeUnit.SECONDS)
            .addNetworkInterceptor(interceptor)
            .readTimeout(20,TimeUnit.SECONDS)
            .writeTimeout(20,TimeUnit.SECONDS)
            .build();
}
//网络请求
public void doGet(String url, final ICallback iCallback, final Class clazz){
    //创建请求
    Request request = new Request.Builder()
            .get()
            .url(url)
            .build();
    Call call = client.newCall(request);
    //开启异步线程
    call.enqueue(new Callback() {

        @Override
        public void onFailure(Call call, final IOException e) {
            handler.post(new Runnable() {
                @Override
                public void run() {
                    iCallback.faild(e);
                }
            });
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            String s = response.body().string();
            Gson gson = new Gson();
            final Object o = gson.fromJson(s, clazz);
            handler.post(new Runnable() {
                @Override
                public void run() {
                    iCallback.success(o);
                }
            });
        }
    });
}

public interface ICallback{
    void success(Object object);
    void faild(IOException s);
}

自定控件

public class CricleView extends LinearLayout {
public CricleView(Context context) {
    super(context);
}

public CricleView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    View view=LayoutInflater.from(context).inflate(R.layout.title,this);
}

public CricleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}
}

在activity中展示数据

    left=findViewById(R.id.leftRecyclerView);
    right=findViewById(R.id.rightRecyclerView);
    xBanner=findViewById(R.id.xbanner);
    showPresenter=new Presenter(this);
    showPresenter.getbanner();
    showPresenter=new Presenter(this);
    showPresenter.presenterLeftData();
    showPresenter=new Presenter(this);
    showPresenter.presenterRightData(1);
    LinearLayoutManager linearLayoutManager=new LinearLayoutManager(MainActivity.this);
    linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    left.setLayoutManager(linearLayoutManager);
    GridLayoutManager gridLayoutManager=new GridLayoutManager(MainActivity.this,3);
    right.setLayoutManager(gridLayoutManager);
    scan=findViewById(R.id.scan);
    scan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            QRCodeManager.getInstance()
                    .with(MainActivity.this)
                    .setReqeustType(1)
                    .scanningQRCode(new OnQRCodeScanCallback() {
                        @Override
                        public void onCompleted(String s) {
                            Toast.makeText(MainActivity.this,"成功"+ s,Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onError(Throwable throwable) {
                            Toast.makeText(MainActivity.this,"扫描取消了"+ throwable,Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onCancel() {
                            Toast.makeText(MainActivity.this,"扫描取消了",Toast.LENGTH_SHORT).show();
                        }
                    });
        }
    });
}

@Override
public void viewLeftData(Object o) {
    LeftBean leftBean = (LeftBean) o;
    LeftAdapter leftAdapter=new LeftAdapter(MainActivity.this, leftBean);
    leftAdapter.SetOnItemClick(new LeftAdapter.SetOnItemClick() {
        @Override
        public void onOnItemClick(int position, List<LeftBean.ResultBean> list) {
            showPresenter.presenterRightData(Integer.parseInt(list.get(position).getId()));
        }
    });
    left.setAdapter(leftAdapter);
}

@Override
public void viewRightData(Object o) {
    RightBean rightBean = (RightBean) o;
    RightAdapter rightAdapter=new RightAdapter(MainActivity.this,rightBean);
    right.setAdapter(rightAdapter);
}

@Override
public void getbanner(Object object) {
    XbannerBean xbannerBean = (XbannerBean) object;
    final List<XbannerBean.ResultBean> list=xbannerBean.getResult();
    this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            xBanner.setData(list, null);
            xBanner.loadImage(new XBanner.XBannerAdapter() {
                @Override
                public void loadBanner(XBanner banner, Object model, View view, int position) {
                    Glide.with(MainActivity.this)
                            .load(list.get(position).getImageUrl())
                            .into((ImageView) view);
                    banner.setPageChangeDuration(2000);
                }
            });
            //点击跳转传至
            xBanner.setOnItemClickListener(new XBanner.OnItemClickListener() {
                @Override
                public void onItemClick(XBanner banner, Object model, View view, int position) {
                    Intent intent=new Intent(MainActivity.this,WebActivity.class);
                    intent.putExtra("url", list.get(position).getJumpUrl());
                    startActivity(intent);
                }
            });
        }
    });


}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    QRCodeManager.getInstance().with(MainActivity.this).onActivityResult(requestCode,resultCode,data);
}

猜你喜欢

转载自blog.csdn.net/weixin_43926099/article/details/88317451
今日推荐