Я пытаюсь использовать модернизацию для получения записей из моего API, и он отлично работает, когда я делаю что-то подобное.
public interface materialAPI {
@GET("/mlearningServices/Course") public void getMaterials(Callback<List<materialClass>> response); } public void getMaterials() { RestAdapter adapter = new RestAdapter.Builder().setEndpoint(Root_Url).build(); Log.i(TAG , "hERE IS THE LINK"+adapter.toString()); materialAPI api = adapter.create(materialAPI.class); api.getMaterials(new Callback <List<materialClass>>() { @Override public void success(List<materialClass> list, Response response) { materials = list; showList(); customAdapter customAdapter = new customAdapter(); listView.setAdapter(customAdapter); } @Override public void failure(RetrofitError error) { } }); }
Приведенный выше код работает нормально, и я могу получить все свои материалы, но дальше я хочу получить материал с любым идентификатором. Когда пользователь выбирает конкретный материал, я хочу передать идентификатор в URL-адрес получения, чтобы я мог получить записи.
это означает, что я должен сделать что-то вроде этого
@GET("/mlearningServices/Course/{myId}")
..
Как добавить myId в метод обратного вызова. Я впервые использую дооснащение
То, о чем вы спрашиваете, называется path variable. Чтобы установить его, вы должны переписать подпись вашего метода следующим образом:
public void getMaterials(@Path("myId") String id, Callback<List<materialClass>> response);
Таким образом, переменная, определенная как / path / to / your / endpoint / {nameOfPathVariable}, будет вставлена в этот параметр String, переданный методу. Вы также можете определить его как целое число, и при модернизации будет предпринята попытка преобразовать его соответствующим образом.
Используйте аннотацию @Path
@POST("/mlearningServices/Course/{myId}")
public void getMaterials(@Path("myId") String id, Callback<Response> response);
Использованная литература:
Решение:
Вы можете использовать это, чтобы передать свой идентификатор, используйте аннотацию @Path
@GET("/mlearningServices/Course/{myId}")
Call<materialClass> getMaterials(@Path("myId") String id);
@Path - это некоторые данные, которые вы хотите предоставить методу GET перед вопросительным знаком ("?"), А @Query ("..") - это данные, которые вы хотите предоставить после "?"
Надеюсь, вы поняли.