如何在try-catch语句中使if-else正常工作?

时间:2019-03-29 13:15:13

标签: java android android-recyclerview try-catch

我的手机上有json array的所有姓名和联系人,看起来像这样:

[{"name":"andy","phone_number":"+123"},{"name":"bob","phone_number":"+456"},{"name":"chris","phone_number":"+789"}]

我对照db中的电话号码检查电话号码,如果有匹配项,我想在回收者视图中显示姓名,如果没有匹配项,则仅显示该号码。

例如+123,是的,它在数据库中,因此在andy的单元格中显示recyclerview+789不在数据库中,因此在单元格中显示+789

到目前为止,这就是我正在使用的东西:if部分存在比赛时,它可以工作,但是我不知道如何处理else部分(对于何时存在不匹配)。如果我取消对else代码的注释,它总是会直接跳到那里。

    public void onResponse(String response) {

    try {

      //name our JSONObject User_Private_Public_Obj, which is response from server
      //the response from server will be like:
      //{"private_review_ids":[{"reviewid":7,"username":"+123"},{"reviewid":14,"username":"+456"}]}

      JSONObject User_Private_Public_Obj = new JSONObject(response);

      //Now break up the response from server
      //We want the JSON Array part, "private_review_ids"
      JSONArray private_ids = User_Private_Public_Obj.getJSONArray("private_review_ids");

      for
        //get the number of objects in User_Private_Public_Obj
          (int i = 0; i < private_ids.length(); i++)

      {

        //for each object in the array private_ids, name it obj
        //each obj will consist of reviewid and username
        JSONObject obj = private_ids.getJSONObject(i);

        Review review = new Review();

        //get the string from sharedpreferences, AllPhonesandNamesofContacts,
        //it will be like [{"phone_number":"+123","name":"andy"}, etc...]
        //we want this so we can display phone name in recyclerView, if it's a contact
        SharedPreferences sharedPrefs = getSharedPreferences("MyData", Context.MODE_PRIVATE);
        String json_array = sharedPrefs.getString("AllPhonesandNamesofContacts", "0");

        //convert the string above into a json array
        JSONArray jsonArray = new JSONArray(json_array);

      //set a string to the phone number from the DB,
        //the phone number of the person who made the review
        phoneNoInDB = obj.getString("username");

        //set the setter to the phone number string, the string is
        //the phone number of the person who made the review
        review.setPhoneNumberofUserFromDB(phoneNoInDB);

        //jsonArray is our All Phones and Names of Contacts array
        int matching = jsonArray.length();

        for (int n = 0; n < matching; n++) {

          try {

            //for every object in "All Phones and Names of Contacts" array...
            JSONObject object = jsonArray.getJSONObject(n);

            //if the review maker is a contact...that is,
            //if the phone_number in AllPhonesandNamesofContacts equals
            //the phone number in the DB
            if (object.getString("phone_number").equals(phoneNoInDB)) {

             //just for testing purposes...
              Toast.makeText(NewActivity.this, object.getString("phone_number") + " = " + phoneNoInDB, Toast.LENGTH_LONG).show();

              //then rip out the other part of the object, the name in
              // AllPhonesandNamesofContacts
              //of the person who made the review
              review.setphoneNameonPhone(object.getString("name"));

              //add the review to the sharedReviewList
              reviewList.add(review);

            }

          /*  else {

                //just for testing...
                Toast.makeText(NewActivity.this, " should be green" + object.getString("phone_number") + " = " + phoneNoInDB, Toast.LENGTH_LONG).show();

                review.setphoneNameonPhone(object.getString("phone_number"));

                //add the review to the sharedReviewList
                //reviewList.add(review);

              }*/


          } catch (JSONException e) {
            System.out.println("error in if else");
            //Log.e("MYAPP", "unexpected JSON exception", e);
            // Do something to recover ... or kill the app.
          }
        }

      //set the adapter to show the random reviews
      recyclerView.setAdapter(uAdapter);

0 个答案:

没有答案