2017-03-07 1 views
0

Salut les amis je ne peux pas comprendre comment faire cette méthode s'il vous plaît aidez-moi. J'utilise le retrofit pour le JSON parsing son fonctionnement bien quand les données sont là mais quand il n'y a pas de données dedans alors la réponse sera différente comme ci-dessous où quand j'utilise le Volley alors j'ai utilisé la méthode pour savoir que les données sont là ou non, mais je ne peux pas le faire dans la rénovationEn utilisant la méthode dans la rénovation

{ 
    "messae": "No Friends Found", 
    "status": "failure" 
} 

mais Lorsque les données sont là, la réponse sera comme celui-ci

{ 
    "friends": [ 
     { 
      "username": "tester", 
      "user_id": "7", 
      "profile": "http://54.202.3.127/parallel_space/uploads/noimage.png", 
      "city": "kakinada", 
      "phone": "7894561231", 
      "status": "1" 
     }, 
     { 
      "username": "tester", 
      "user_id": "9", 
      "profile": "http://54.202.3.127/parallel_space/uploads/http://54.202.3.127/parallel_space/uploads/pic-91488861905.jpg", 
      "city": "kakinada", 
      "phone": "7894561230", 
      "status": "1" 
     } 
    ], 
    "status": "Success" 
} 

Main.class

public class Friend_request extends AppCompatActivity { 
    @BindView(R.id.frd_req_list) 
    RecyclerView frd_req_list; 
    FastItemAdapter<Friend_Request_adapter> friend_request_adapter = new FastItemAdapter<>(); 
    @BindView(R.id.frd_req_toolbar) 
    Toolbar frd_req_toolbar; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.friend_requets); 
     ButterKnife.bind(this); 
     setSupportActionBar(frd_req_toolbar); 
     assert getSupportActionBar() != null; 
     getSupportActionBar().setTitle("Friend Request"); 
     getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     frd_req_list.setLayoutManager(new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false)); 
     frd_req_list.addItemDecoration(new Divider(this, LinearLayoutManager.VERTICAL)); 
     frd_req_list.setAdapter(friend_request_adapter); 
     frdreq_method(); 
    } 

    private void frdreq_method() { 
     Constant.showloader(Friend_request.this); 
     Retrofit frq_reqretrofit = new Retrofit.Builder().baseUrl(Constant.url).client(Constant.okClient()).addConverterFactory(GsonConverterFactory.create()).build(); 
     Api fre_req_api = frq_reqretrofit.create(Api.class); 
     Call<Friend_Request_adapter> frq_req_call = fre_req_api.frdreqcall(Session.getUserID(getApplicationContext())); 
     frq_req_call.enqueue(new Callback<Friend_Request_adapter>() { 
      @Override 
      public void onResponse(Call<Friend_Request_adapter> call, Response<Friend_Request_adapter> response) { 
       Constant.l(String.valueOf(response)); 
       List<Friend_Request_adapter> frdlistadapter = response.body().getFriends(); 
       friend_request_adapter.add(frdlistadapter); 
       Constant.dismissloader(); 
      } 

      @Override 
      public void onFailure(Call<Friend_Request_adapter> call, Throwable t) { 
       Constant.l(t.toString()); 
       Constant.dismissloader(); 
      } 
     }); 
    } 

} 

A dapter.class (avec micro Penz adaptateur rapide)

public class Friend_Request_adapter extends AbstractItem<Friend_Request_adapter, Friend_Request_adapter.FriendRequest_ViewHolder> { 
    JsonObject frdreqbj; 
    @SerializedName("messae") 
    private String messae; 
    @SerializedName("status") 
    private String responsestatus; 
    @SerializedName("friends") 
    List<Friend_Request_adapter> friends; 
    @SerializedName("profile") 
    private String friendreq_pic; 
    @SerializedName("username") 
    private String frienduser_name; 
    @SerializedName("status") 
    private String friendstatus; 
    @SerializedName("user_id") 
    private String frduserid; 

    public String getMessae() { 
     return messae; 
    } 

    public void setMessae(String messae) { 
     this.messae = messae; 
    } 

    public String getResponsestatus() { 
     return responsestatus; 
    } 

    public void setResponsestatus(String responsestatus) { 
     this.responsestatus = responsestatus; 
    } 

    public JsonObject getFrdreqbj() { 
     return frdreqbj; 
    } 

    public void setFrdreqbj(JsonObject frdreqbj) { 
     this.frdreqbj = frdreqbj; 
    } 

    public List<Friend_Request_adapter> getFriends() { 
     return friends; 
    } 

    public void setFriends(List<Friend_Request_adapter> friends) { 
     this.friends = friends; 
    } 

    public String getFrduserid() { 
     return frduserid; 
    } 

    public void setFrduserid(String frduserid) { 
     this.frduserid = frduserid; 
    } 

    public String getFriendstatus() { 
     return friendstatus; 
    } 

    public void setFriendstatus(String friendstatus) { 
     this.friendstatus = friendstatus; 
    } 

    public String getFriendreq_pic() { 
     return friendreq_pic; 
    } 

    public void setFriendreq_pic(String friendreq_pic) { 
     this.friendreq_pic = friendreq_pic; 
    } 

    public String getFrienduser_name() { 
     return frienduser_name; 
    } 

    public void setFrienduser_name(String frienduser_name) { 
     this.frienduser_name = frienduser_name; 
    } 

    @Override 
    public int getType() { 
     return R.id.frd_req_list; 
    } 


    @Override 
    public int getLayoutRes() { 
     return R.layout.friend_request_item; 
    } 

    @Override 
    public void bindView(FriendRequest_ViewHolder holder, List<Object> payloads) { 
     super.bindView(holder, payloads); 
     holder.frd_req_item_name.setText(frienduser_name); 
     holder.frd_req_msg.setText("Online"); 
     Picasso.with(holder.itemView.getContext()).load(friendreq_pic).into(holder.frd_req_img); 
    } 

    public static class FriendRequest_ViewHolder extends RecyclerView.ViewHolder { 
     @BindView(R.id.frd_req_img) 
     CircleImageView frd_req_img; 
     @BindView(R.id.frd_req_item_name) 
     TextView frd_req_item_name; 
     @BindView(R.id.frd_req_msg) 
     TextView frd_req_msg; 
     @BindView(R.id.accept) 
     FancyButton accept; 
     @BindView(R.id.delete) 
     FancyButton delete; 


     public FriendRequest_ViewHolder(View itemView) { 
      super(itemView); 
      ButterKnife.bind(this, itemView); 
     } 
    } 
} 
+0

pouvez-vous essayer http://stackoverflow.com/questions/35502079/custom-converter-for-retrofit-2 – Raghunandan

Répondre

0

Vous devez vérifier soit success ou failure du serveur. Vous devez donc créer une autre classe Model puis vérifier le succès ou non

par exemple.

public class FriendsResposne implements Serializable { 
    @SerializedName("status") 
    private String status; 
    @SerializedName("messae") 
    private String message; 
    @SerializedName("friends") 
    private List<Friend_Request_adapter> friendsArr; 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public List<Friend_Request_adapter> getFriendsArr() { 
     return friendsArr; 
    } 

    public void setFriendsArr(List<Friend_Request_adapter> friendsArr) { 
     this.friendsArr = friendsArr; 
    } 
} 

puis appeler comme

private void frdreq_method() { 
     Constant.showloader(Friend_request.this); 
     Retrofit frq_reqretrofit = new Retrofit.Builder().baseUrl(Constant.url).client(Constant.okClient()).addConverterFactory(GsonConverterFactory.create()).build(); 
     Api fre_req_api = frq_reqretrofit.create(Api.class); 
     Call<FriendsResposne> frq_req_call = fre_req_api.frdreqcall(Session.getUserID(getApplicationContext())); 
     frq_req_call.enqueue(new Callback<FriendsResposne>() { 
      @Override 
      public void onResponse(Call<FriendsResposne> call, Response<FriendsResposne> response) { 
       Constant.l(String.valueOf(response)); 

       FriendsResposne fr = response.body(); 

       if(fr.getStatus.equals("Success")){// check here success or not 
        List<Friend_Request_adapter> frdlistadapter =  fr.getFriends(); 
        friend_request_adapter.add(frdlistadapter); 
       }else{ 
        Toast.makeText(this, fr.getMessage(), Toast.LENGTH_SHORT).show(); 
       } 
       Constant.dismissloader(); 
      } 

      @Override 
      public void onFailure(Call<FriendsResposne> call, Throwable t) { 
       Constant.l(t.toString()); 
       Constant.dismissloader(); 
      } 
     }); 
    } 

Laissez-moi savoir si vous êtes face à tout problème.

+0

mais en utilisant tant de classe POJO signifie qu'il charge na –

+0

@orienlalxoxoorienlalxoxo Oui, mais vous savez que les classes ne prennent pas trop de mémoire. C'est en KB. Nous devons créer des classes pour chaque réponse. –

+0

@orienlalxoxoorienlalxoxo Avez-vous votre solution? –