У меня 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, данные загружаются в первый раз.