多条目 zxing捕获异常 xbanner

#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"?>







<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>

##多条目布局

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值