Created
October 6, 2021 18:19
-
-
Save codinginflow/27023cb7b764875c5dcf08636619eb85 to your computer and use it in GitHub Desktop.
Retrofit Tutorial Part 4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:app="http://schemas.android.com/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:padding="8dp" | |
tools:context=".MainActivity"> | |
<android.support.v4.widget.NestedScrollView | |
android:layout_width="match_parent" | |
android:layout_height="match_parent"> | |
<TextView | |
android:id="@+id/text_view_result" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:textColor="#000" /> | |
</android.support.v4.widget.NestedScrollView> | |
</android.support.constraint.ConstraintLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.codinginflow.retrofitexample"> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<application | |
android:allowBackup="true" | |
android:icon="@mipmap/ic_launcher" | |
android:label="@string/app_name" | |
android:roundIcon="@mipmap/ic_launcher_round" | |
android:supportsRtl="true" | |
android:theme="@style/AppTheme"> | |
<activity android:name=".MainActivity"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.codinginflow.retrofitexample; | |
import com.google.gson.annotations.SerializedName; | |
public class Comment { | |
private int postId; | |
private int id; | |
private String name; | |
private String email; | |
@SerializedName("body") | |
private String text; | |
public int getPostId() { | |
return postId; | |
} | |
public int getId() { | |
return id; | |
} | |
public String getName() { | |
return name; | |
} | |
public String getEmail() { | |
return email; | |
} | |
public String getText() { | |
return text; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.codinginflow.retrofitexample; | |
import java.util.List; | |
import java.util.Map; | |
import retrofit2.Call; | |
import retrofit2.http.Body; | |
import retrofit2.http.DELETE; | |
import retrofit2.http.Field; | |
import retrofit2.http.FieldMap; | |
import retrofit2.http.FormUrlEncoded; | |
import retrofit2.http.GET; | |
import retrofit2.http.PATCH; | |
import retrofit2.http.POST; | |
import retrofit2.http.PUT; | |
import retrofit2.http.Path; | |
import retrofit2.http.Query; | |
import retrofit2.http.QueryMap; | |
import retrofit2.http.Url; | |
public interface JsonPlaceHolderApi { | |
@GET("posts") | |
Call<List<Post>> getPosts( | |
@Query("userId") Integer[] userId, | |
@Query("_sort") String sort, | |
@Query("_order") String order | |
); | |
@GET("posts") | |
Call<List<Post>> getPosts(@QueryMap Map<String, String> parameters); | |
@GET("posts/{id}/comments") | |
Call<List<Comment>> getComments(@Path("id") int postId); | |
@GET | |
Call<List<Comment>> getComments(@Url String url); | |
@POST("posts") | |
Call<Post> createPost(@Body Post post); | |
@FormUrlEncoded | |
@POST("posts") | |
Call<Post> createPost( | |
@Field("userId") int userId, | |
@Field("title") String title, | |
@Field("body") String text | |
); | |
@FormUrlEncoded | |
@POST("posts") | |
Call<Post> createPost(@FieldMap Map<String, String> fields); | |
@PUT("posts/{id}") | |
Call<Post> putPost(@Path("id") int id, @Body Post post); | |
@PATCH("posts/{id}") | |
Call<Post> patchPost(@Path("id") int id, @Body Post post); | |
@DELETE("posts/{id}") | |
Call<Void> deletePost(@Path("id") int id); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.codinginflow.retrofitexample; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.widget.TextView; | |
import com.google.gson.Gson; | |
import com.google.gson.GsonBuilder; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import retrofit2.Call; | |
import retrofit2.Callback; | |
import retrofit2.Response; | |
import retrofit2.Retrofit; | |
import retrofit2.converter.gson.GsonConverterFactory; | |
public class MainActivity extends AppCompatActivity { | |
private TextView textViewResult; | |
private JsonPlaceHolderApi jsonPlaceHolderApi; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
textViewResult = findViewById(R.id.text_view_result); | |
Gson gson = new GsonBuilder().serializeNulls().create(); | |
Retrofit retrofit = new Retrofit.Builder() | |
.baseUrl("https://jsonplaceholder.typicode.com/") | |
.addConverterFactory(GsonConverterFactory.create(gson)) | |
.build(); | |
jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class); | |
//getPosts(); | |
//getComments(); | |
//createPost(); | |
//updatePost(); | |
deletePost(); | |
} | |
private void getPosts() { | |
Map<String, String> parameters = new HashMap<>(); | |
parameters.put("userId", "1"); | |
parameters.put("_sort", "id"); | |
parameters.put("_order", "desc"); | |
Call<List<Post>> call = jsonPlaceHolderApi.getPosts(parameters); | |
call.enqueue(new Callback<List<Post>>() { | |
@Override | |
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) { | |
if (!response.isSuccessful()) { | |
textViewResult.setText("Code: " + response.code()); | |
return; | |
} | |
List<Post> posts = response.body(); | |
for (Post post : posts) { | |
String content = ""; | |
content += "ID: " + post.getId() + "\n"; | |
content += "User ID: " + post.getUserId() + "\n"; | |
content += "Title: " + post.getTitle() + "\n"; | |
content += "Text: " + post.getText() + "\n\n"; | |
textViewResult.append(content); | |
} | |
} | |
@Override | |
public void onFailure(Call<List<Post>> call, Throwable t) { | |
textViewResult.setText(t.getMessage()); | |
} | |
}); | |
} | |
private void getComments() { | |
Call<List<Comment>> call = jsonPlaceHolderApi | |
.getComments("https://jsonplaceholder.typicode.com/posts/3/comments"); | |
call.enqueue(new Callback<List<Comment>>() { | |
@Override | |
public void onResponse(Call<List<Comment>> call, Response<List<Comment>> response) { | |
if (!response.isSuccessful()) { | |
textViewResult.setText("Code: " + response.code()); | |
return; | |
} | |
List<Comment> comments = response.body(); | |
for (Comment comment : comments) { | |
String content = ""; | |
content += "ID: " + comment.getId() + "\n"; | |
content += "Post ID: " + comment.getPostId() + "\n"; | |
content += "Name: " + comment.getName() + "\n"; | |
content += "Email: " + comment.getEmail() + "\n"; | |
content += "Text: " + comment.getText() + "\n\n"; | |
textViewResult.append(content); | |
} | |
} | |
@Override | |
public void onFailure(Call<List<Comment>> call, Throwable t) { | |
textViewResult.setText(t.getMessage()); | |
} | |
}); | |
} | |
private void createPost() { | |
Post post = new Post(23, "New Title", "New Text"); | |
Map<String, String> fields = new HashMap<>(); | |
fields.put("userId", "25"); | |
fields.put("title", "New Title"); | |
Call<Post> call = jsonPlaceHolderApi.createPost(fields); | |
call.enqueue(new Callback<Post>() { | |
@Override | |
public void onResponse(Call<Post> call, Response<Post> response) { | |
if (!response.isSuccessful()) { | |
textViewResult.setText("Code: " + response.code()); | |
return; | |
} | |
Post postResponse = response.body(); | |
String content = ""; | |
content += "Code: " + response.code() + "\n"; | |
content += "ID: " + postResponse.getId() + "\n"; | |
content += "User ID: " + postResponse.getUserId() + "\n"; | |
content += "Title: " + postResponse.getTitle() + "\n"; | |
content += "Text: " + postResponse.getText() + "\n\n"; | |
textViewResult.setText(content); | |
} | |
@Override | |
public void onFailure(Call<Post> call, Throwable t) { | |
textViewResult.setText(t.getMessage()); | |
} | |
}); | |
} | |
private void updatePost() { | |
Post post = new Post(12, null, "New Text"); | |
Call<Post> call = jsonPlaceHolderApi.patchPost(5, post); | |
call.enqueue(new Callback<Post>() { | |
@Override | |
public void onResponse(Call<Post> call, Response<Post> response) { | |
if (!response.isSuccessful()) { | |
textViewResult.setText("Code: " + response.code()); | |
return; | |
} | |
Post postResponse = response.body(); | |
String content = ""; | |
content += "Code: " + response.code() + "\n"; | |
content += "ID: " + postResponse.getId() + "\n"; | |
content += "User ID: " + postResponse.getUserId() + "\n"; | |
content += "Title: " + postResponse.getTitle() + "\n"; | |
content += "Text: " + postResponse.getText() + "\n\n"; | |
textViewResult.setText(content); | |
} | |
@Override | |
public void onFailure(Call<Post> call, Throwable t) { | |
textViewResult.setText(t.getMessage()); | |
} | |
}); | |
} | |
private void deletePost() { | |
Call<Void> call = jsonPlaceHolderApi.deletePost(5); | |
call.enqueue(new Callback<Void>() { | |
@Override | |
public void onResponse(Call<Void> call, Response<Void> response) { | |
textViewResult.setText("Code: " + response.code()); | |
} | |
@Override | |
public void onFailure(Call<Void> call, Throwable t) { | |
textViewResult.setText(t.getMessage()); | |
} | |
}); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.codinginflow.retrofitexample; | |
import com.google.gson.annotations.SerializedName; | |
public class Post { | |
private int userId; | |
private Integer id; | |
private String title; | |
@SerializedName("body") | |
private String text; | |
public Post(int userId, String title, String text) { | |
this.userId = userId; | |
this.title = title; | |
this.text = text; | |
} | |
public int getUserId() { | |
return userId; | |
} | |
public int getId() { | |
return id; | |
} | |
public String getTitle() { | |
return title; | |
} | |
public String getText() { | |
return text; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment