REST API XML
posts[ { "id": 16344, "date": "2017-11-29T12:45:58", "date_gmt": "2017-11-29T07:15:58", "modified": "2017-11-29T12:45:58", "modified_gmt": "2017-11-29T07:15:58", "type": "post", "title": { "rendered": "This is post from example.com" }, "content": { "rendered": "
This is post from example.com
\n", "protected": false }, "excerpt": { "rendered": "This is post from example.com
\n", "protected": false }, "featured_media": 0, "categories": [ 1 ],"better_featured_image": {
"id": 16221,
"alt_text": "",
"caption": "",
"description": "",
"media_type": "image",
"media_details": {
"width": 1070,
"height": 286,
"sizes": {
"thumbnail": {
"file": "under_construction-e1509092603289-150x150.jpg",
"width": 150,
"height": 150,
"mime-type": "image/jpeg",
"source_url": "http://example.com/under_construction- e1509092603289-150x150.jpg"
}
}
}
}
} ]
public class PostList {
@SerializedName("date")
@Expose
private String date;
@SerializedName("title")
@Expose
private Title title;
@SerializedName("excerpt")
@Expose
private Excerpt excerpt;
@SerializedName("better_featured_image")
@Expose
private FeaturedImage betterFeaturedImage;
@SerializedName("categories")
@Expose
private List<Integer> categories = null;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public Title getTitle() {
return title;
}
public void setTitle(Title title) {
this.title = title;
}
public Excerpt getExcerpt() {
return excerpt;
}
public void setExcerpt(Excerpt excerpt) {
this.excerpt = excerpt;
}
public FeaturedImage getBetterFeaturedImage() {
return betterFeaturedImage;
}
public void setBetterFeaturedImage(FeaturedImage betterFeaturedImage) {
this.betterFeaturedImage = betterFeaturedImage;
}
public List<Integer> getCategories() {
return categories;
}
public void setCategories(List<Integer> categories) {
this.categories = categories;
}
public class FeaturedImage {
@SerializedName("media_details")
@Expose
private MediaDetail media_details = null;
public MediaDetail getMedia_details() {
return media_details;
}
public void setMedia_details(MediaDetail media_details) {
this.media_details = media_details;
}
}
public class MediaDetail {
@SerializedName("sizes")
@Expose
private Sizes sizes = null;
public Sizes getSizes() {
return sizes;
}
public void setSizes(Sizes sizes) {
this.sizes = sizes;
}
}
public class Sizes {
@SerializedName("medium")
@Expose
private Medium medium = null;
public Medium getMedium() {
return medium;
}
public void setMedium(Medium medium) {
this.medium = medium;
}
}
public class Medium {
@SerializedName("source_url")
@Expose
private String source_url;
public String getSource_url() {
return source_url;
}
public void setSource_url(String source_url) {
this.source_url = source_url;
}
}
public class ProgramingAdapter extends RecyclerView.Adapter {
Context context;
private PostList[] data;
public ProgramingAdapter(Context context, PostList[] data) {
this.context = context;
this.data = data;
}
@Override
public ProgramingViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.list_item, parent, false);
return new ProgramingViewHolder(view);
}
@Override
public void onBindViewHolder(ProgramingViewHolder holder, int position) {
PostList FImage = data[position];
final String Tit = FImage.getTitle().getRendered();
if (Tit.length() <= 70) {
holder.txtTitle.setText(Tit);
} else {
String TitNew = FImage.getTitle().getRendered().substring(0, 70);
holder.txtTitle.setText(TitNew + "...");
}
String Cat = FImage.getCategories().toString();
String Cat1 = Cat.replaceAll("\\[", "").replaceAll("\\]", "");
holder.txtCat.setText(Cat1);
String date = FImage.getDate().substring(0, 10);
holder.txtDate.setText(date);
String Exc = FImage.getExcerpt().getRendered();
if (Exc.length() <= 80) {
holder.txtExc.setText(Exc);
} else {
String ExcNew = FImage.getExcerpt().getRendered().substring(0, 80);
holder.txtExc.setText(ExcNew + "...");
}
Picasso.with(holder.ImgIcon.getContext()).load(FImage.getBetterFeaturedImage().getMedia_details().getSizes().getMedium().toString()).into(holder.ImgIcon);
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(context, Tit , Toast.LENGTH_SHORT).show();
return false;
}
});
}
@Override
public int getItemCount() {
return data.length;
}
public class ProgramingViewHolder extends RecyclerView.ViewHolder {
ImageView ImgIcon;
TextView txtTitle;
TextView txtDate;
TextView txtExc;
TextView txtCat;
public ProgramingViewHolder(View itemView) {
super(itemView);
ImgIcon = itemView.findViewById(R.id.Img);
txtTitle = itemView.findViewById(R.id.Title);
txtDate = itemView.findViewById(R.id.Date);
txtExc = itemView.findViewById(R.id.Exc);
txtCat = itemView.findViewById(R.id.Cat);
}
}
}
public class MainActivity extends AppCompatActivity {
ImageView imageView;
private static final String URL = "http://example.com/wp-json/wp/v2/posts";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.Img);
final RecyclerView programingList = (RecyclerView) findViewById(R.id.progeramingList);
programingList.setLayoutManager(new LinearLayoutManager(this));
final StringRequest request = new StringRequest(Request.Method.GET,URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("PostList", response);
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
PostList[] post = gson.fromJson(response, PostList[].class);
programingList.setAdapter(new ProgramingAdapter(MainActivity.this, post));
Toast.makeText(MainActivity.this, "Ok", Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
});
RequestQueue queue = Volley.newRequestQueue(this);
queue.add(request);
}
}
Error
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.dev.recycler_new, PID: 7965 java.lang.NullPointerException: Attempt to invoke virtual method 'com.example.dev.recycler_new.MediaDetail com.example.dev.recycler_new.FeaturedImage.getMedia_details()' on a null object reference at com.example.dev.recycler_new.ProgramingAdapter.onBindViewHolder(ProgramingAdapter.java:70) at com.example.dev.recycler_new.ProgramingAdapter.onBindViewHolder(ProgramingAdapter.java:20)