使用改造从 API 获取数据 [英] Get Data from API using retrofit

查看:50
本文介绍了使用改造从 API 获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从 API 获取详细信息并在文本视图中显示它们.

I need to get the details from the API and display them in textviews.

这是我的 JSON 格式的 API:https://imgur.com/a/WI98ymx

Here's my API in JSON format : https://imgur.com/a/WI98ymx

我需要在字符串中获取用户名、用户图像、用户电话号码等数据,并在文本视图中显示它们.我如何请求所有字段并在不同的文本视图中显示列表?

I need to get the data like username, user image, user phone number etc in Strings and display them in textviews. How do i request all the fields and show the list in different textviews?

这是我的登录界面

package com.example.hb.loginapi;

import java.util.List;

   import retrofit2.Call;
   import retrofit2.http.GET;

  import retrofit2.http.POST;

   import retrofit2.http.Query;

    interface Login {

   @POST("user_login_v1")
   Call<ResObj>  loginInfo(@Query("password") String password, 
   @Query("email") String email);


   @GET("user_login_v1")
   Call<List> getUserDetails();


}

这是我的 ResObj 类

Here's my ResObj class

package com.example.hb.loginapi;

import com.google.gson.annotations.SerializedName;
import java.util.List;

 public class ResObj {



@SerializedName("settings")
private Settings settings;

@SerializedName("data")
private List<DataItem> data;

public void setSettings(Settings settings){
    this.settings = settings;
}

public Settings getSettings(){
    return settings;
}

public void setData(List<DataItem> data){
    this.data = data;
}

public List<DataItem> getData(){
    return data;
}

public class Settings {

    @SerializedName("success")
    private String success;

    @SerializedName("message")
    private String message;

    @SerializedName("fields")
    private List<String> fields;

    public void setSuccess(String success) {
        this.success = success;
    }

    public String getSuccess() {
        return success;
    }

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

    public String getMessage() {
        return message;
    }

    public void setFields(List<String> fields) {
        this.fields = fields;
    }

    public List<String> getFields() {
        return fields;
    }
}

public class DataItem{

    @SerializedName("user_name")
    private String userName;

    @SerializedName("search_report_count")
    private String searchReportCount;

    @SerializedName("access_token")
    private String accessToken;

    @SerializedName("profile_image")
    private String profileImage;

    @SerializedName("is_social")
    private String isSocial;

    @SerializedName("is_notification_enabled")
    private String isNotificationEnabled;

    @SerializedName("user_id")
    private String userId;

    @SerializedName("phone")
    private String phone;

    @SerializedName("plate_number")
    private String plateNumber;

    @SerializedName("state_id")
    private String stateId;

    @SerializedName("state")
    private String state;

    @SerializedName("email")
    private String email;

    @SerializedName("status")
    private String status;

    public void setUserName(String userName){
        this.userName = userName;
    }

    public String getUserName(){
        return userName;
    }

    public void setSearchReportCount(String searchReportCount){
        this.searchReportCount = searchReportCount;
    }

    public String getSearchReportCount(){
        return searchReportCount;
    }

    public void setAccessToken(String accessToken){
        this.accessToken = accessToken;
    }

    public String getAccessToken(){
        return accessToken;
    }

    public void setProfileImage(String profileImage){
        this.profileImage = profileImage;
    }

    public String getProfileImage(){
        return profileImage;
    }

    public void setIsSocial(String isSocial){
        this.isSocial = isSocial;
    }

    public String getIsSocial(){
        return isSocial;
    }

    public void setIsNotificationEnabled(String isNotificationEnabled){
        this.isNotificationEnabled = isNotificationEnabled;
    }

    public String getIsNotificationEnabled(){
        return isNotificationEnabled;
    }

    public void setUserId(String userId){
        this.userId = userId;
    }

    public String getUserId(){
        return userId;
    }

    public void setPhone(String phone){
        this.phone = phone;
    }

    public String getPhone(){
        return phone;
    }

    public void setPlateNumber(String plateNumber){
        this.plateNumber = plateNumber;
    }

    public String getPlateNumber(){
        return plateNumber;
    }

    public void setStateId(String stateId){
        this.stateId = stateId;
    }

    public String getStateId(){
        return stateId;
    }

    public void setState(String state){
        this.state = state;
    }

    public String getState(){
        return state;
    }

    public void setEmail(String email){
        this.email = email;
    }

    public String getEmail(){
        return email;
    }

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

    public String getStatus(){
        return status;
    }
}

}

我的布局

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:background="#e9edf6"
    android:scrollbars="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    <com.mikhaellopez.circularimageview.CircularImageView
        android:id="@+id/userProfilePic"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:layout_width="150dp"
        android:layout_height="150dp"
        />

        <TextView
            android:id="@+id/userName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyNameText"
            android:layout_marginTop="50dp"
            />

        <TextView
            android:id="@+id/userID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyUserIDText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/emailID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyEmailText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/userStatus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyStatusText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/userPlateNum"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyPlateNumText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/userStateName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyStateNameText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/userStateID"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummyStateIDText"
            android:layout_marginTop="20dp"
            />

        <TextView
            android:id="@+id/userSearchReportCount"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/fnavyblue"
            android:textSize="20sp"
            android:text="DummySearchReportCountText"
            android:layout_marginTop="20dp"
            />

    </LinearLayout>
</ScrollView>

我的 MainActivity.java

My MainActivity.java

public class MainActivity extends AppCompatActivity {

List emList=new ArrayList();

List dataList=new ArrayList();

List userDets=new ArrayList();

ImageView proImg;
TextView userName;
TextView userID;
TextView userEmail;
TextView userStatus;
TextView userPlateNum;
TextView userStateName;
TextView userStateID;
TextView userSearchReportCount;

String img;
String name;
String idUser;
String emailID;
String status;
String plateNum;
String stateName;
String stateID;
String searchReportCount;

String email;

Login login;

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

    emList.add(email);

    userName=findViewById(R.id.userName);


    email=getIntent().getStringExtra("email");

     login=ApiUtils.getLoginClass();

    getUserData();
}


private void getUserData(){
    Call<List> call=login.getUserDetails();

    call.enqueue(new Callback() {
        @Override
        public void onResponse(Call call, Response response) {
            if(response.isSuccessful()){
                List resObj=(List)response.body();


                for(int i=0;i<resObj.size();i++){
                    Log.e("data",resObj.get(i).toString());
                }
 }
        }


        @Override
        public void onFailure(Call call, Throwable t) {
            Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });
}

}

我不知道在 onResponse() 方法中写什么.

I don't know what to write in the onResponse() method.

推荐答案

使用 Android studio 插件GsonFormat"创建 ResObj.class它将为您的 APICall 创建一个完美的 POJO 类,只是通过 Postman 的 API GET 响应.它将创建一个合适的 POJO 类,您可以从中简单地调用

Create ResObj.class using Android studio plugin "GsonFormat" It will create a perfect POJO class for your APICall, just past the API GET response from Postman. It will create a suitable POJO class, from which you can simply call

 private void callApi() {
    Log.e(TAG, "callApi: inside apiCall");
    Call<List> call = 
 login.getUserDetails();

 call.enqueue(new Callback<List>() {
        @Override
        public void onResponse(Call<List> call, @NonNull Response<List>response) {
            List items = response.body();

            items = list.data;
            String user_id = items.getUserID();
        }

        @Override
        public void onFailure(Call<LiveMatches> call, Throwable t) {

        }

在想要获取数据的地方调用 callApi() 方法;如果您复制并粘贴它,则此方法和方法将不起作用,您需要根据您的 POJO 类对其进行更改,但这将提供帮助还要添加您的布局和活动代码以提供上下文

call callApi() method where you want to get data; This method and method will not work if you copy and paste it you need to alter it according to your POJO class but this will provide help Also add your layout and activity code to give us context

这篇关于使用改造从 API 获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆