In last part of WP Android App using REST and volley tutorial we have learned to set up the basic UI of our WP app. In this part we will learn how to implement the below two features for our WP app.
- Retrieve the sort description of the post and show in WP app
- Show the featured Image in WP app
So first we will start by retrieving the short description of the post and show that description in our WP app.
In last tutorial we only show the title of the post, but we know showing only short title will not describe the post very well, so we should show some short description about the post. For this we don’t need to do much work just need to retrieve the excerpt tag from the JSON Object that we have already fetched during retrieving the list of all post for our WP android App.
Below is the link of the series or Article of WP android App
- WP Android App using REST and Vollery Part1
- WP Android App using REST and Vollery Part2
- LiveData and ViewModel for WP Android App using REST and volley part3
Get the excerpt content from JSON Object
For getting the excerpt from the post list JSON Object and store it in variable we need to follow the below steps.
First of all we need to add new variable in our post.java file and set the get and set method.
String excerpt;
public String getExcerpt() {
return excerpt;
}
public void setExcerpt(String excerpt) {
this.excerpt = excerpt;
}
Now retrieve and set the value of excerpt into variable using below two-line of code, below code we have to add in the same method where we retrieve the title of the post.
//Get excerpt
JSONObject exerptObj=obj.getJSONObject("excerpt");
post.setExcerpt(exerptObj.getString("rendered"));
Further, we have to show that value in our app also, so we need to add a TextView to the our PostItem layout xml file as given below.
<TextView
android:id="@+id/excerpt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textIsSelectable="true"
android:textSize="14sp"
android:visibility="visible" />
At last we need to update our post item adapter file that is PostAdapter.java file, add the below line in our VideoViewHolder and declare the variable.
protected TextView vExcerpt;
vExcerpt=(TextView) v.findViewById(R.id.excerpt);
Then set the value to our text view.
((VideoViewHolder)holder).vExcerpt.setText(Html.fromHtml(post.getExcerpt()));
Important point to notice here is, we are setting the Html.fromHtml inside setText method , it is because excerpt are returned in the html format.
Get the featured Image of the Post in WP App
So far we have done with basic layout of the our WP App and now we want to set the featured image of the post to make it more attractive.
So for adding the featured Image we need to do two work.
- First retrieve the featured Image
- Set the featured image into the post
So for retrieving the featured image we need to modify getPost method of MainActivit.java file as given below.
Here we suppose that you have already added a variable in our Post.java file to store the featured Image Url like below.
String postImg;
public String getPostImg() {
return postImg;
}
public void setPostImg(String postImg) {
this.postImg = postImg;
}
For retrieving the featured image first we need to get the Url of the featured JSON Url and then we need to retrieve that json
JSONObject featureImage=obj.getJSONObject("_links");
JSONArray featureImageUrl=featureImage.getJSONArray("wp:featuredmedia");
JSONObject featureImageObj=featureImageUrl.getJSONObject(0);
String fiurl=featureImageObj.getString("href");
Retrieve the JSON and store the URL into the respective position in list.
if(fiurl!=null) {
Log.d(TAG, featureImageObj.getString("href"));
final int id=i;
JsonObjectRequest getMedia = new JsonObjectRequest(Request.Method.GET,
fiurl, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
Log.d(TAG, response.getString("source_url"));
post.setPostImg(response.getString("source_url"));
} catch (JSONException e) {
e.printStackTrace();
}
postAdapter.notifyItemChanged(id);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, error.toString());
}
}
);
requestQueue.add(getMedia);
}
After the above change we are successfully get the URL of our featured image and we need to set that into our imageview by modifying the our post adapter class as given below.
GlideApp.with(context)
.load(post.getPostImg())
.thumbnail(0.2f)
.apply(fitCenterTransform())
.centerCrop()
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.skipMemoryCache(false)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
Log.e(TAG, "Load failed", e);
for (Throwable t : e.getRootCauses()) {
Log.e(TAG, "Caused by", t);
}
e.logRootCauses(TAG);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
})
.into(((VideoViewHolder) holder).vImage);
Now our WP android app will look like as given below.
If you have not read the first post of creating the WP Android App then you can first have look on below WP android app using REST and Volley.
https://www.nplix.com/2017/11/12/wp-android-app-using-rest/
Sagar Sharma
31 Dec 2018How to get featured image of post using retrofit??
Pawan Kumar
10 Jan 2019In reply to Sagar Sharma.
Refer the below tutorial:-
https://www.nplix.com/wp-android-app-using-rest-volley-livedata-part3/
// getting URL of the Post fetured Image
JSONObject featureImage=obj.getJSONObject(“_links”);
JSONArray featureImageUrl=featureImage.getJSONArray(“wp:featuredmedia”);
JSONObject featureImageObj=featureImageUrl.getJSONObject(0);
String fiurl=featureImageObj.getString(“href”);
Pingback: WordPress Android App with REST API And Retrofit - NPLIX
Rakha Nwe
4 Mar 2018Full Source Code Please
Pawan Kumar
4 Mar 2018Hi Rakha,
you can find the source code at below link.
https://github.com/debugandroid/WPApp
Let me know in case of any further issue.
Thanks,
Rakha Nwe
5 Mar 2018Thanks a lot bro Pawan Kumar.
Have a great day!
Pawan Kumar
5 Mar 2018You are most Welcome!
Pingback: WP Android App using REST and volley - NPLIX
Pingback: Scan and List all WiFi Network In Android - NPLIX
Pingback: How to Read and Write JSON data using GSON - NPLIX
Pingback: WP Android App using REST and volley - NPLIX