のREST APIのXML試み
記事[ { "ID":16344、 "日付":「2017から11 "2017-11-29T07:15:58"、 "modified": "2017-11-29T12:45:58"、 "modified_gmt": "2017-11-29T07:15:58" 11-29T07:15:58" 、 "タイプ": "POST"、 "タイトル":{ ": ":{ 「 " コンテンツレンダリング" は、" これはexample.comからポストである}" レンダリング":"
このexample.com
\からポストであるN " は、 "保護":}偽 、 "抜粋":{ は "レンダリング": "これはexample.com
からポストされ\ n" は、 が" 保護「偽 }、 "featured_media":0、 "カテゴリ":[ 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"
}
}
}
}
}]
パブリッククラスPostL IST {
@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;
}
}
パブリッククラスMediaDetail {
@SerializedName("sizes")
@Expose
private Sizes sizes = null;
public Sizes getSizes() {
return sizes;
}
public void setSizes(Sizes sizes) {
this.sizes = sizes;
}
}
パブリッククラスサイズ{
@SerializedName("medium")
@Expose
private Medium medium = null;
public Medium getMedium() {
return medium;
}
public void setMedium(Medium medium) {
this.medium = 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;
}
}
パブリッククラスProgramingAdapterが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);
}
}
}
パブリッククラスMainActivityがAppCompatActivity {
を拡張を拡張}
エラー
E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.dev.recycler_new、PID:7965 java.lang.NullPointerExceptionが仮想メソッドを呼び出す試み「COM .example.dev.recycler_new.MediaDetail com.example.dev.recycler_new.FeaturedImage.getMedia_details(null)オブジェクト参照の場合 com.example.dev.recycler_new.ProgramingAdapter.onBindViewHolder(ProgramingAdapter.java:70) at com .example.dev.recycler_new.ProgramingAdapter.onBindViewHolder(ProgramingAdapter。Javaの:20)
申し訳ありませんが、動作していません。同じエラーが発生しました。 – Kishan