Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改装Android get date from REST API无法正常工作_Java_Android_Post - Fatal编程技术网

Java 改装Android get date from REST API无法正常工作

Java 改装Android get date from REST API无法正常工作,java,android,post,Java,Android,Post,我有一个关于spring的RESTAPI。我可以从url:localhost:8080/all获取数据 我创建了一个类: public class DataAPI { private static final String CLASS_TAG = "DataAPI"; RestAdapter retrofit; MyWebService myWebService; private List<Teacher> list; public Dat

我有一个关于spring的RESTAPI。我可以从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;
    }
公共类DataAPI{
私有静态最终字符串CLASS_TAG=“DataAPI”;
再适应改造;
MyWebService MyWebService;
私人名单;
公共数据API(){
字符串url=”http://10.101.12.31:8080/";
改装=新的RestAdapter.Builder()
.setEndpoint(url)
.build();
myWebService=reformation.create(myWebService.class);
}
@RequiresApi(api=Build.VERSION\u code.N)
公共列表getAllDepartments(){
试一试{
myWebService.getAllTeacher(新回调(){
@凌驾
public void成功(列表数据、响应){
Log.d(CLASS_标记,data.toString());
//data.stream().forEach(System.out::println);
列表=数据;
}
@凌驾
公共无效失败(错误){
}
});
}捕获(例外e){
Log.d(CLASS_标记,例如toString());
}
返回此.departmentList;
}
MyWebService:

public interface MyWebService {
    @GET("/all")
    void getAllDepartments(Callback<List<Teacher>> pResponse);
公共接口MyWebService{
@获取(“/全部”)
作废所有部门(回拨预应答);
主要活动:

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()));
                }
            }
        });
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串CLASS_TAG=“MainActivity”;
文本视图文本视图;
DataAPI DataAPI;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
dataAPI=新的dataAPI();
setContentView(R.layout.activity_main);
textView=findViewById(R.id.textView);
findviewbyd(R.id.button\u get).setOnClickListener(新视图.OnClickListener(){
@RequiresApi(api=Build.VERSION\u code.N)
@凌驾
公共void onClick(视图v){
textView.setText(“”);
List List=dataAPI.getAllDepartments();
System.out.println(list==null);
如果(列表!=null){
list.stream().forEach(x->textView.setText(textView.getText()+“\n”+x.toString());
}
}
});
我的应用程序上有一个按钮。当我第一次点击它时,没有任何变化,但当我第二次点击时,数据正在加载。
当我将所有代码从DataAPI粘贴到方法onClick时,数据将在第一时间加载。

使用接口将数据获取到调用的活动,如下所示, 第一个写接口

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

}
公共列表getAllDepartments(最终APICallback.GetResponseCallback回调){
@凌驾
public void成功(列表数据、响应){
Log.d(CLASS_标记,data.toString());
//data.stream().forEach(System.out::println);
列表=数据;
callback.onSuccess(响应);
}
}

使用接口将数据获取到被调用的活动,如下所示, 第一个写接口

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

}
公共列表getAllDepartments(最终APICallback.GetResponseCallback回调){
@凌驾
public void成功(列表数据、响应){
Log.d(CLASS_标记,data.toString());
//data.stream().forEach(System.out::println);
列表=数据;
callback.onSuccess(响应);
}
}

如果可以将
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();

如果可以将该
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();

请您添加一些关于“我的应用程序”的详细信息,不仅仅是关于您的“REST API”?我的应用程序获取对象列表并在应用程序上设置它们(字符串)。这是Android应用程序。由于您的调用是异步的,您正在返回一个空列表。请在success方法中返回列表,可能使用livedata之类的方法。请您添加一些关于“我的应用程序”的详细信息,而不仅仅是关于您的“REST API”?我的应用程序获取对象列表并在应用程序上设置它们(字符串)。这是Android应用程序。您返回的是一个空列表,因为您的调用是异步的。在success方法中返回列表,可能使用livedata之类的方法。此解决方案不起作用,因为我有:公共接口MyWebService{@GET(“/all”)void getAllDepartments(回调前应答);我已经使用过您的界面,如getAllDepartments()在我的代码中。方法getAllDepartments没有要重写的方法success。它位于我在回答中实现的回调接口中。再次:我必须创建包含接口的类APICallBack,在MainActivity类中实现此接口:公共类MainActivity扩展AppCompativity实现APICallBack和@Override我不知道你说的“将接口传递给DataAPI类。公共列表getAllDepartments(最终的APICallback.GetResponseCallback回调){”是什么意思,因为我有:公共接口MyWebService{@GET(“/all”)void getAllDepartments(回调前应答);我已经使用过您的界面,如getAllDepartments()在我的代码中。方法getAllDepartments没有要重写的方法success。它位于我在回答中实现的回调接口中。再次:我必须创建包含接口的类APICallBack,在MainActivity类中实现此接口:公共类MainActivity扩展AppCompativity实现APICallBack和@Override我不知道该怎么办