java - 改造 Android 从 REST API 获取日期无法正常工作

标签 java android post

我在 spring 上有一个 REST API。我可以从 url: localhost:8080/all 获取数据 我创建了类:

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);

主要 Activity :

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 方法时,数据将在第一次加载。

最佳答案

使用接口(interface)将数据获取到被调用的 Activity ,如下所示, 先写接口(interface),

public class APICallBack {

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

在您的 MainActivity 中实现此接口(interface)。 你打电话时 dataAPI.getAllDepartments();

将接口(interface)传递给您的 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);
            }

}

关于java - 改造 Android 从 REST API 获取日期无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901927/

相关文章:

java - 如何更改 Tomcat 7.X 中的 session 持久性?

php - 是否有可能 foreach $this->input->post();在代码点火器中?

java - 当某些值必须晚于其他值出现时如何对列表进行排序,可能会忽略需要 'delaying' 的此类项目的排序顺序

java - 使用 maven 创建 zip 文件

java - 如何获取没有设定长度的数组的特定组成部分?

android - 如何在改造中解析嵌套对象模型

android - Android ICS 中的 notification.number 在哪里

java - LibGDX 输入仅运行我的循环一次,并且在单击鼠标时不会连续运行

post - 如何使用参数重定向 Action 作为 Struts 中的帖子?

html - 在没有 WebView 的情况下在 Android 中提交 HTML 表单