多条目 zxing 捕获异常 xbanner qq登录

#activity

umShareAPI = UMShareAPI.get(this);

##application

public class ZxingApplication extends Application implements Thread.UncaughtExceptionHandler{
    @Override
    public void onCreate() {
        super.onCreate();
//qq
        UMConfigure.init(this, "5c3b1c25b465f5ca0700095c", "Umeng", UMConfigure.DEVICE_TYPE_PHONE,"");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        UMConfigure.setLogEnabled(true);
        //捕获异常
        Thread.setDefaultUncaughtExceptionHandler(this);
        //zxing
        ZXingLibrary.initDisplayOpinion(this);
    }
//捕获异常
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        StringWriter writer = new StringWriter();
        PrintWriter printWriter = new PrintWriter(writer);
        e.printStackTrace(printWriter);
        new Thread(new Runnable() {
            @Override
            public void run() {
                Looper.prepare();
                Toast.makeText(ZxingApplication.this,"捕获到异常",Toast.LENGTH_SHORT).show();
                Looper.loop();
            }
        }).start();

    }
}

##清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.x.dianshang_week3">
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <!--qq-->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" /> <!-- 使用照相机权限 -->
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <application

        android:name=".app.ZxingApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".HomeActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="tencent100424468" />
            </intent-filter>

        </activity>

        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

        <activity android:name=".MainActivity" />
        <activity android:name=".ZxingActivity"></activity>
    </application>

</manifest>

##多条目布局

public class HomeAdapter extends XRecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private ProlistBean.DataBean list;

    public HomeAdapter(Context context, ProlistBean.DataBean list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (getItemViewType(i)==0){
            View inflate = LayoutInflater.from(context).inflate(R.layout.fen_layout, viewGroup, false);
            FenVH fenVH = new FenVH(inflate);
            return fenVH;
        }else if (getItemViewType(i)==1){
            View inflate = LayoutInflater.from(context).inflate(R.layout.miao_layout, viewGroup, false);
            MiaoVH miaoVH = new MiaoVH(inflate);
            return miaoVH;
        }else {
            View inflate = LayoutInflater.from(context).inflate(R.layout.tui_layout, viewGroup, false);
            TuiVH tuiVH = new TuiVH(inflate);
            return tuiVH;
        }
        
        
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {

        if (viewHolder instanceof FenVH){
            ((FenVH) viewHolder).rc_fen.setLayoutManager(new GridLayoutManager(context,2,GridLayoutManager.HORIZONTAL,false));
            Fenadapter fenadapter = new Fenadapter(context,list.fenlei);
            ((FenVH) viewHolder).rc_fen.setAdapter(fenadapter);
        }else if(viewHolder instanceof MiaoVH){
            ((MiaoVH) viewHolder).rc_miao.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            Miaoadapter miaoadapter = new Miaoadapter(context,list.miaosha.list);
            ((MiaoVH) viewHolder).rc_miao.setAdapter(miaoadapter);
        }else {
            ((TuiVH) viewHolder).rc_tui.setLayoutManager(new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false));
            Tuiadapter tuiadapter = new Tuiadapter(context,list.tuijian.list);
            ((TuiVH) viewHolder).rc_tui.setAdapter(tuiadapter);
        }
    }

    @Override
    public int getItemCount() {
        return 3;
    }

    @Override
    public int getItemViewType(int position) {
       
        if (position==0){
            return 0;
        }else if(position==1){
            return 1;
        }else {
            return 2;
        }

        
    }

    class FenVH extends RecyclerView.ViewHolder{

        RecyclerView rc_fen;
        public FenVH(@NonNull View itemView) {
            super(itemView);
            rc_fen = itemView.findViewById(R.id.rc_fen);

        }
    }
    class MiaoVH extends RecyclerView.ViewHolder{
        ImageView miao_img;
        TextView miao_price;
        RecyclerView rc_miao;
        public MiaoVH(@NonNull View itemView) {
            super(itemView);
            rc_miao = itemView.findViewById(R.id.rc_miao);
            /*miao_img = itemView.findViewById(R.id.miao_img);
            miao_price = itemView.findViewById(R.id.miao_price);*/
        }
    }
    class TuiVH extends RecyclerView.ViewHolder{
        ImageView tui_img;
        TextView tui_name;
        RecyclerView rc_tui;
        public TuiVH(@NonNull View itemView) {
            super(itemView);
            rc_tui = itemView.findViewById(R.id.rc_tui);
            /*tui_img = itemView.findViewById(R.id.tui_img);
            tui_name = itemView.findViewById(R.id.tui_name);*/
        }
    }
}

##分类adapter

public class Fenadapter extends RecyclerView.Adapter<Fenadapter.VH> {
    private Context context;
    private List<ProlistBean.DataBean.FenleiBean> list;

    public Fenadapter(Context context, List<ProlistBean.DataBean.FenleiBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public Fenadapter.VH onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View inflate = LayoutInflater.from(context).inflate(R.layout.item1, viewGroup, false);
        VH vh = new VH(inflate);
        return vh;
    }

    @Override
    public void onBindViewHolder(@NonNull VH vh, int i) {
        ProlistBean.DataBean.FenleiBean fenleiBean = list.get(i);
        vh.fen_name.setText(fenleiBean.name);
        Glide.with(context).load(fenleiBean.icon).into(vh.fen_img);
    }





    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }

    class VH extends RecyclerView.ViewHolder {
        ImageView fen_img;
        TextView fen_name;
        public VH(@NonNull View itemView) {
            super(itemView);
           fen_img = itemView.findViewById(R.id.fen_img);
            fen_name = itemView.findViewById(R.id.fen_name);
        }
    }

##契约类

public interface Contract {
    public abstract class IHomePresenter{
       public abstract void getBanner(HashMap<String,String> map);
        //public abstract void getProlist(HashMap<String,String> map);
    }
    interface IHomeModel{
        void getBanner(HashMap<String,String> map, RequestCallback requestCallback);
        //void getProlist(HashMap<String,String> map, RequestCallback requestCallback);
    }
    interface IHomewView{
        void onBannerFail(String msg);
        void onBannerSucc(List<ProlistBean.DataBean.BannerBean> bannerBean);
        void onProFail(String msg);
        void onProSuccess(ProlistBean.DataBean probean);
    }
}

##model

public class HomeMdel implements Contract.IHomeModel {
    Handler handler = new Handler();
    @Override
    public void getBanner(HashMap<String, String> map, final RequestCallback requestCallback) {
        OkhttpUtil.getInstance().Post(map, HomeApi.HOME_URL, new OkhttpCallback() {
            @Override
            public void onFailok(final String msg) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        requestCallback.onFailok(msg);
                    }
                });
            }

            @Override
            public void onSuccessok(final String result) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        requestCallback.onSuccessok(result);
                    }
                });
            }
        });
    }


}

##p

public class HomePresenter extends Contract.IHomePresenter {
    private HomeMdel homeMdel;
    private Contract.IHomewView iHomewView;

    public HomePresenter( Contract.IHomewView iHomewView) {
        this.homeMdel = new HomeMdel();
        this.iHomewView = iHomewView;
    }

    @Override
    public void getBanner(HashMap<String, String> map) {
        homeMdel.getBanner(map, new RequestCallback() {
            @Override
            public void onFailok(String msg) {
                iHomewView.onBannerFail(msg);
            }

            @Override
            public void onSuccessok(String result) {
                ProlistBean prolistBean = new Gson().fromJson(result, ProlistBean.class);
                List<ProlistBean.DataBean.BannerBean> banner = prolistBean.data.banner;
                iHomewView.onBannerSucc(banner);



                ProlistBean.DataBean data = prolistBean.data;

                iHomewView.onProSuccess(data);
            }
        });
    }
}

##homeavtivity

public class HomeActivity extends AppCompatActivity implements Contract.IHomewView {

    private ImageView img_sao;
    private List<String> imgesUrl;
    
    private String image;
    private XBanner xbanner;
    private HomePresenter homePresenter;
    private XRecyclerView xrc;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        xbanner = findViewById(R.id.xbanner);
        img_sao = findViewById(R.id.img_sao);
        xrc = findViewById(R.id.xrc);
        img_sao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(HomeActivity.this,ZxingActivity.class);
                startActivity(intent);
            }
        });
        homePresenter = new HomePresenter(this);
        homePresenter.getBanner(new HashMap<String, String>());
    }

    @Override
    public void onBannerFail(String msg) {

    }

    @Override
    public void onBannerSucc(List<ProlistBean.DataBean.BannerBean> bannerBean) {
        imgesUrl = new ArrayList<>();
        for (int i=0;i<bannerBean.size();i++) {
            image = bannerBean.get(i).icon;
            imgesUrl.add(image);
        }
        xbanner.setData(imgesUrl,null);
        //加载广告图片
        xbanner.loadImage(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, Object model, View view, int position) {
                //1、此处使用的Glide加载图片,可自行替换自己项目中的图片加载框架
                //2、返回的图片路径为Object类型,你只需要强转成你传输的类型就行,切记不要胡乱强转!
                Glide.with(HomeActivity.this).load(imgesUrl.get(position)).into((ImageView) view);
            }
        });
    }

    @Override
    public void onProFail(String msg) {


    }

    @Override
    public void onProSuccess(ProlistBean.DataBean proBean) {
        xrc.setLayoutManager(new LinearLayoutManager(this));
        HomeAdapter homeAdapter = new HomeAdapter(this,proBean);
        xrc.setAdapter(homeAdapter);
    }

}

##okutil

public class OkhttpUtil {
    private static OkhttpUtil instance;
    private final OkHttpClient okHttpClient;

    private OkhttpUtil() {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(httpLoggingInterceptor)
                .writeTimeout(5,TimeUnit.SECONDS)
                .connectTimeout(5,TimeUnit.SECONDS)
                .readTimeout(5,TimeUnit.SECONDS)
                .build();

    }
    public static OkhttpUtil getInstance(){
        if (instance==null){
            synchronized (OkhttpUtil.class){
                if (instance==null){
                    instance = new OkhttpUtil();
                }
            }
        }
        return instance;
    }
    public void Post(final HashMap<String,String> map, String url, final OkhttpCallback callback){
        FormBody.Builder formBody = new FormBody.Builder();
        for (Map.Entry<String, String> m : map.entrySet()) {
            formBody.add(m.getKey(),m.getValue());
        }
        Request request = new Request.Builder()
                .url(url)
                .post(formBody.build())
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onFailok("请求失败");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
callback.onSuccessok(response.body().string());
            }
        });
    }
    public void Get(HashMap<String,String> map, String url, final OkhttpCallback callback){
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                callback.onFailok("请求失败");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                callback.onSuccessok("请求成功!");
            }
        });
    }
    public void cencal(){
        okHttpClient.dispatcher().cancelAll();
    }
}

##xbanner布局

<com.stx.xhb.xbanner.XBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/xbanner"
        android:layout_marginTop="50dp"

        android:layout_width="wrap_content"
        android:layout_height="150dp"
        app:AutoPlayTime="3000"
        app:pointsContainerBackground="#44aaaaaa"
        app:pointsPosition="RIGHT"
        app:tipTextSize="12sp"
        app:isShowNumberIndicator="true"
        app:isShowIndicatorOnlyOne="true"
        app:pageChangeDuration="800"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/sear"
        app:layout_constraintBottom_toTopOf="@+id/xrc"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值