Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改造Android和RecyclerView:堆栈大小8MB_Java_Android_Android Recyclerview_Retrofit2 - Fatal编程技术网

Java 改造Android和RecyclerView:堆栈大小8MB

Java 改造Android和RecyclerView:堆栈大小8MB,java,android,android-recyclerview,retrofit2,Java,Android,Android Recyclerview,Retrofit2,您好,朋友们,在开发Android时,我遇到了一个错误:堆栈大小8MB,在我调用webservice时,对版本2进行了改造。当我的回收视图中有一个项目时,就会出现错误。你知道这个问题吗?当我在没有RecyclerView的情况下调用我的web服务时,它会工作。你能帮我吗 这是我的错误: 我在android studio中的错误 这是我的密码: MainActivity.java public class MainActivity extends AppCompatActivity {

您好,朋友们,在开发Android时,我遇到了一个错误:堆栈大小8MB,在我调用webservice时,对版本2进行了改造。当我的回收视图中有一个项目时,就会出现错误。你知道这个问题吗?当我在没有RecyclerView的情况下调用我的web服务时,它会工作。你能帮我吗

这是我的错误:

我在android studio中的错误

这是我的密码:

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    private MainActivity mActivity;
    private Context mContext;

    @BindView(R.id.cl_fcl_maincontent)
    CoordinatorLayout clConnexionContent;

    @BindView(R.id.et_saisie_bureautique_scan_obj)
    EditText etModScanObj;

    @BindView(R.id.tv_textEmpty)
    TextView tvTextEmpty;
    @BindView(R.id.rv_mod_objet_list)
    RecyclerView rvModObjetList;

    @BindView(R.id.fb_send)
    FloatingActionButton fbSend;
    ProgressDialog progressDialog;

    List<Objets> objetsList;
    ServerServicesProvider mServicesProvider;
    String androidId, destinataire, expediteur;
    int statut;
    ObjetRecyclerViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        mActivity = this;
        mContext = mActivity.getApplicationContext();

        mServicesProvider = getServerServicesProvider();

        androidId = "myAndroidId";
        destinataire = "3 : ABROUS DABHIA";
        expediteur = "1 : ABITBOL STEEVE";
        statut = 3;

        objetsList = new ArrayList<Objets>();

        Objets o = new Objets(1,0,"2018-04-09 10:53:59","2018-04-09","Entrant","TEST1764970",1,1,1,1,1,"",3,"","","","",1,"",1);

        objetsList.add(o);

        rvModObjetList.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
        rvModObjetList.setItemAnimator(new DefaultItemAnimator());

        if(objetsList != null && objetsList.size() > 0){

            tvTextEmpty.setVisibility(View.GONE);

            adapter = new ObjetRecyclerViewAdapter(getApplicationContext(), objetsList);
            rvModObjetList.setAdapter(adapter);
            rvModObjetList.addOnItemTouchListener(
                    new RecyclerItemClickListener(getApplicationContext(), new RecyclerItemClickListener.OnItemClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            Objets objets = objetsList.get(position);
                            objets.setSelected(!objets.isSelected());
                            view.setBackgroundColor(objets.isSelected() ? mContext.getResources().getColor(R.color.colorItemSelected) : Color.WHITE);
                        }
                    })
            );
        } else {
            tvTextEmpty.setVisibility(View.VISIBLE);
        }

        synchronizeListener();
    }

    public void synchronizeListener(){

        fbSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // on modifie les informations pour les objets selectionnés
                try {
                    Call<MsgInformationWs> callWs = mServicesProvider.getWebServicesInterface().setModificationObjets(androidId, objetsList, statut, destinataire, expediteur);
                    callWs.enqueue(new Callback<MsgInformationWs>() {
                        @Override
                        public void onResponse(Call<MsgInformationWs> postConnexionCall, Response<MsgInformationWs> response) {
                            if(response.isSuccessful()) {
                                if(response.body() != null){
                                    if(response.body().getInfoId() == 0){

                                        Toast.makeText(getApplicationContext(), response.body().getInfoMsg() , Toast.LENGTH_LONG).show();

                                    } else {
                                        Log.e(this.getClass().getName(), response.body().getInfoMsg());
                                        Snackbar.make(clConnexionContent, response.body().getInfoMsg(), Snackbar.LENGTH_SHORT)
                                                .show();
                                    }
                                } else {
                                    Log.e(this.getClass().getName(), "Retrofit setModificationObjets : " + response.message());
                                    Snackbar.make(clConnexionContent, "Retrofit setModificationObjets : " + response.message(), Snackbar.LENGTH_SHORT)
                                            .show();
                                }

                            } else {
                                Log.e(this.getClass().getName(), "Retrofit setModificationObjets : " + response.message());
                                Snackbar.make(clConnexionContent, "Retrofit setModificationObjets : " + response.message(), Snackbar.LENGTH_SHORT)
                                        .show();
                            }
                        }

                        @Override
                        public void onFailure(Call<MsgInformationWs> call, Throwable t) {
                            Log.e(this.getClass().getName(), "Retrofit error : " + t);
                            Snackbar.make(clConnexionContent, "Retrofit error : " + t, Snackbar.LENGTH_INDEFINITE)
                                    .show();

                        }
                    });
                } catch (Exception ex) {
                    //ex.printStackTrace();
                    if (mActivity != null) {
                        Log.e(this.getClass().getName(),"Erreur lors de la connexion au serveur");
                        Snackbar.make(clConnexionContent, "Erreur lors de la connexion au serveur", Snackbar.LENGTH_SHORT)
                                .show();
                    }
                }

            }
        });

    }

    /**
     * fonction qui permet d'utiliser les webservice REST via la lib Retrofit v2
     * @return ServerServicesProvider
     */
    public ServerServicesProvider getServerServicesProvider(){
        if(mServicesProvider == null){
            mServicesProvider = new ServerServicesProvider();
            mServicesProvider.setEndPoint("https://my-url.com");
            mServicesProvider.createWebInterface();
        }
        return mServicesProvider;
    }
}
 public class ObjetRecyclerViewAdapter extends RecyclerView.Adapter<ObjetRecyclerViewAdapter.ObjetsViewHolder> {

    private List<Objets> mObjetsList;
    private Context mContext;


    public ObjetRecyclerViewAdapter(Context context, List<Objets> mObjetsList) {
        this.mObjetsList = mObjetsList;
        this.mContext = context;

    }

    @Override
    public ObjetRecyclerViewAdapter.ObjetsViewHolder onCreateViewHolder(ViewGroup viewGroup, int itemType) {

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_objet_cards_view, viewGroup, false);

        ObjetRecyclerViewAdapter.ObjetsViewHolder viewHolder = new ObjetRecyclerViewAdapter.ObjetsViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final ObjetRecyclerViewAdapter.ObjetsViewHolder objetsHolder, int position) {

        final Objets objets = mObjetsList.get(position);

        objetsHolder.tvObjetName.setText(objets.getoNumeroObjet());

        objets.setoView(objetsHolder.view);

    }

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

    class ObjetsViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.tv_objet_name) protected TextView tvObjetName;
        protected View view;

        public ObjetsViewHolder(View itemView) {
            super(itemView);
            this.view = itemView;
            ButterKnife.bind(this, view);
        }
    }
}
    public class Objets implements Parcelable {

    @SerializedName("IdO")
    private int oIdo;

    @SerializedName("IdRef")
    private int oIdRef;

    @SerializedName("TimeStamp")
    private String oTimeStamp;

    @SerializedName("DateDebut")
    private String oDateDebut;

    @SerializedName("Flux")
    private String oFlux;

    @SerializedName("NumeroObjet")
    private String oNumeroObjet;

    @SerializedName("IdU")
    private int oIdu;

    @SerializedName("IdSC")
    private int oIdSc;

    @SerializedName("IdStatut")
    private int oIdStatut;

    @SerializedName("IdNature")
    private int oIdNature;

    @SerializedName("ExpediteurInterne")
    private int oExpediteurInterne;

    @SerializedName("ExpediteurExterne")
    private String oExpediteurExterne;

    @SerializedName("DestinataireInterne")
    private int oDestinataireInterne;

    @SerializedName("DestinataireExterne")
    private String oDestinataireExterne;

    @SerializedName("Signataire")
    private String oSignataire;

    @SerializedName("Image")
    private String oImage;

    @SerializedName("ImageSignature")
    private String oImageSignature;

    @SerializedName("IdType")
    private int oIdType;

    @SerializedName("Commentaires")
    private String oCommentaires;

    @SerializedName("IsActive")
    private int oIsActive;

    private boolean isSelected;
    private View oView;

    public Objets() {
    }

    public Objets(int oIdo, int oIdRef, String oTimeStamp, String oDateDebut, String oFlux, String oNumeroObjet, int oIdu, int oIdSc, int oIdStatut, int oIdNature, int oExpediteurInterne, String oExpediteurExterne, int oDestinataireInterne, String oDestinataireExterne, String oSignataire, String oImage, String oImageSignature, int oIdType, String oCommentaires, int oIsActive) {
        this.oIdo = oIdo;
        this.oIdRef = oIdRef;
        this.oTimeStamp = oTimeStamp;
        this.oDateDebut = oDateDebut;
        this.oFlux = oFlux;
        this.oNumeroObjet = oNumeroObjet;
        this.oIdu = oIdu;
        this.oIdSc = oIdSc;
        this.oIdStatut = oIdStatut;
        this.oIdNature = oIdNature;
        this.oExpediteurInterne = oExpediteurInterne;
        this.oExpediteurExterne = oExpediteurExterne;
        this.oDestinataireInterne = oDestinataireInterne;
        this.oDestinataireExterne = oDestinataireExterne;
        this.oSignataire = oSignataire;
        this.oImage = oImage;
        this.oImageSignature = oImageSignature;
        this.oIdType = oIdType;
        this.oCommentaires = oCommentaires;
        this.oIsActive = oIsActive;
    }

    protected Objets(Parcel in) {
        oIdo = in.readInt();
        oIdRef = in.readInt();
        oTimeStamp = in.readString();
        oDateDebut = in.readString();
        oFlux = in.readString();
        oNumeroObjet = in.readString();
        oIdu = in.readInt();
        oIdSc = in.readInt();
        oIdStatut = in.readInt();
        oIdNature = in.readInt();
        oExpediteurInterne = in.readInt();
        oExpediteurExterne = in.readString();
        oDestinataireInterne = in.readInt();
        oDestinataireExterne = in.readString();
        oSignataire = in.readString();
        oImage = in.readString();
        oImageSignature = in.readString();
        isSelected = in.readByte() != 0;
        oIdType = in.readInt();
        oCommentaires = in.readString();
        oIsActive = in.readInt();
    }

    public static final Creator<Objets> CREATOR = new Creator<Objets>() {
        @Override
        public Objets createFromParcel(Parcel in) {
            return new Objets(in);
        }

        @Override
        public Objets[] newArray(int size) {
            return new Objets[size];
        }
    };

    public int getoIdo() {
        return oIdo;
    }

    public void setoIdo(int oIdo) {
        this.oIdo = oIdo;
    }

    public int getoIdRef() {
        return oIdRef;
    }

    public void setoIdRef(int oIdRef) {
        this.oIdRef = oIdRef;
    }

    public String getoTimeStamp() {
        return oTimeStamp;
    }

    public void setoTimeStamp(String oTimeStamp) {
        this.oTimeStamp = oTimeStamp;
    }

    public String getoDateDebut() {
        return oDateDebut;
    }

    public void setoDateDebut(String oDateDebut) {
        this.oDateDebut = oDateDebut;
    }

    public String getoFlux() {
        return oFlux;
    }

    public void setoFlux(String oFlux) {
        this.oFlux = oFlux;
    }

    public String getoNumeroObjet() {
        return oNumeroObjet;
    }

    public void setoNumeroObjet(String oNumeroObjet) {
        this.oNumeroObjet = oNumeroObjet;
    }

    public int getoIdu() {
        return oIdu;
    }

    public void setoIdu(int oIdu) {
        this.oIdu = oIdu;
    }

    public int getoIdSc() {
        return oIdSc;
    }

    public void setoIdSc(int oIdSc) {
        this.oIdSc = oIdSc;
    }

    public int getoIdStatut() {
        return oIdStatut;
    }

    public void setoIdStatut(int oIdStatut) {
        this.oIdStatut = oIdStatut;
    }

    public int getoIdNature() {
        return oIdNature;
    }

    public void setoIdNature(int oIdNature) {
        this.oIdNature = oIdNature;
    }

    public int getoExpediteurInterne() {
        return oExpediteurInterne;
    }

    public void setoExpediteurInterne(int oExpediteurInterne) {
        this.oExpediteurInterne = oExpediteurInterne;
    }

    public String getoExpediteurExterne() {
        return oExpediteurExterne;
    }

    public void setoExpediteurExterne(String oExpediteurExterne) {
        this.oExpediteurExterne = oExpediteurExterne;
    }

    public int getoDestinataireInterne() {
        return oDestinataireInterne;
    }

    public void setoDestinataireInterne(int oDestinataireInterne) {
        this.oDestinataireInterne = oDestinataireInterne;
    }

    public String getoDestinataireExterne() {
        return oDestinataireExterne;
    }

    public void setoDestinataireExterne(String oDestinataireExterne) {
        this.oDestinataireExterne = oDestinataireExterne;
    }

    public String getoSignataire() {
        return oSignataire;
    }

    public void setoSignataire(String oSignataire) {
        this.oSignataire = oSignataire;
    }

    public String getoImage() {
        return oImage;
    }

    public void setoImage(String oImage) {
        this.oImage = oImage;
    }

    public String getoImageSignature() {
        return oImageSignature;
    }

    public void setoImageSignature(String oImageSignature) {
        this.oImageSignature = oImageSignature;
    }

    public boolean isSelected() {
        return isSelected;
    }

    public void setSelected(boolean selected) {
        isSelected = selected;
    }

    public View getoView() {
        return oView;
    }

    public void setoView(View oView) {
        this.oView = oView;
    }

    public int getoIdType() {
        return oIdType;
    }

    public void setoIdType(int oIdType) {
        this.oIdType = oIdType;
    }

    public String getoCommentaires() {
        return oCommentaires;
    }

    public void setoCommentaires(String oCommentaires) {
        this.oCommentaires = oCommentaires;
    }

    public int getoIsActive() {
        return oIsActive;
    }

    public void setoIsActive(int oIsActive) {
        this.oIsActive = oIsActive;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(oIdo);
        parcel.writeInt(oIdRef);
        parcel.writeString(oTimeStamp);
        parcel.writeString(oDateDebut);
        parcel.writeString(oFlux);
        parcel.writeString(oNumeroObjet);
        parcel.writeInt(oIdu);
        parcel.writeInt(oIdSc);
        parcel.writeInt(oIdStatut);
        parcel.writeInt(oIdNature);
        parcel.writeInt(oExpediteurInterne);
        parcel.writeString(oExpediteurExterne);
        parcel.writeInt(oDestinataireInterne);
        parcel.writeString(oDestinataireExterne);
        parcel.writeString(oSignataire);
        parcel.writeString(oImage);
        parcel.writeString(oImageSignature);
        parcel.writeByte((byte) (isSelected ? 1 : 0));
        parcel.writeInt(oIdType);
        parcel.writeString(oCommentaires);
        parcel.writeInt(oIsActive);
    }
}

您试图解决此错误的原因是什么?我在没有RecyclerView的情况下对数据使用了我的Web服务,我没有更多的错误,但我需要在RecyclerView中为我的用户显示我的对象请从您的logcat发布StackOverflower错误的stacktrace。不仅仅是截图。大多数情况下,StackOverflower错误是由某种无限循环或递归产生的。E/com.example.smdufour_admloc.suivea.activities.ModificationActivity$3$1:改装错误:java.lang.StackOverflower错误:运行控制台中堆栈大小8MB我唯一的logcat。更改错误日志以提供完整的堆栈跟踪,即Log.E(this.getClass().getName(),“改装错误:”,t);
    public interface WebServicesInterface {

    /**
     * fonction qui modifie les informations des objets
     * @param objets
     * @return
     */
    @POST("/webservice/setModificationObjets.php")
    Call<MsgInformationWs>
    setModificationObjets(
            @Query("androidId") String androidId,
            @Body List<Objets> objets,
            @Query("statut") int statut,
            @Query("destinataire") String destinataire,
            @Query("expediteur") String expediteur);

}
    public class MsgInformationWs {

    @SerializedName("error")
    private int infoId;

    @SerializedName("message")
    private String infoMsg;

    public MsgInformationWs(int infoId, String infoMsg) {
        this.infoId = infoId;
        this.infoMsg = infoMsg;
    }

    public int getInfoId() {
        return infoId;
    }

    public void setInfoId(int infoId) {
        this.infoId = infoId;
    }

    public String getInfoMsg() {
        return infoMsg;
    }

    public void setInfoMsg(String infoMsg) {
        this.infoMsg = infoMsg;
    }
}