Дооснащение Android получить дату от REST API не работает должным образом - PullRequest
0 голосов
/ 29 апреля 2019

У меня API отдыха на весну.Я могу получить данные из URL: localhost: 8080 / все, что я создал класс:

public class DataAPI {
    private static final String CLASS_TAG = "DataAPI";
    RestAdapter retrofit;
    MyWebService myWebService;
    private List<Teacher> list;


    public DataAPI() {
        String url = "http://10.101.12.31:8080/";
        retrofit = new RestAdapter.Builder()
                .setEndpoint(url)
                .build();
        myWebService = retrofit.create(MyWebService.class);
    }

    @RequiresApi(api = Build.VERSION_CODES.N)
    public List<Department> getAllDepartments() {
        try {
            myWebService.getAllTeacher(new Callback<List<Teacher>>() {

                @Override
                public void success(List<Teacher> data, Response response) {
                    Log.d(CLASS_TAG, data.toString());
//                  data.stream().forEach(System.out::println);
                    list= data;

                }

                @Override
                public void failure(RetrofitError error) {

                }
            });

        } catch (Exception e) {
            Log.d(CLASS_TAG, e.toString());
        }

        return this.departmentList;
    }

MyWebService:

public interface MyWebService {
    @GET("/all")
    void getAllDepartments(Callback<List<Teacher>> pResponse);

MainActivity:

public class MainActivity extends AppCompatActivity {
    private static final String CLASS_TAG = "MainActivity";

    TextView textView;
    DataAPI dataAPI;


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

        textView = findViewById(R.id.textView);


        findViewById(R.id.button_get).setOnClickListener(new View.OnClickListener() {


            @RequiresApi(api = Build.VERSION_CODES.N)
            @Override
            public void onClick(View v) {
                textView.setText("");


                List<Teacher> list = dataAPI.getAllDepartments();
                System.out.println(list == null);
                if (list != null){
                    list.stream().forEach(x -> textView.setText(textView.getText() + "\n" + x.toString()));
                }
            }
        });

У меня естькнопка на моем приложении.Когда я первый раз нажимаю на него, ничего не меняется, но когда я нажимаю второй раз, данные загружаются.Когда я вставляю весь код формы DataAPI в метод onClick, данные загружаются в первый раз.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Если можно использовать это RestAdapter.Builder с GSON, можно определить формат даты для синтаксического анализатора:

Gson gson = new GsonBuilder()
    .setDateFormat(API_DATE_FORMAT)
    .create();

Retrofit retrofit = new retrofit2.Retrofit.Builder()
    .addConverterFactory(GsonConverterFactory.create(gson))
    .baseUrl(API_BASE_URL)
    .build();
0 голосов
/ 29 апреля 2019

используйте интерфейс для получения данных для вызываемой активности, как показано ниже, интерфейс первой записи,

public class APICallBack {

public interface GetResponseCallback{
    void onSuccess(yourresponsetype response);
    void onFailed();
}
}

реализуйте этот интерфейс в вашей MainActivity.когда вы вызываете dataAPI.getAllDepartments ();

, передайте интерфейс вашему классу DataAPI.

 public List<Department> getAllDepartments(final APICallback.GetResponseCallback callback){

            @Override
            public void success(List<Teacher> data, Response response) {
                Log.d(CLASS_TAG, data.toString());
//                  data.stream().forEach(System.out::println);
                list= data;
              callback.onSuccess(response);
            }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...