試み

2017-12-04 9 views
-1

の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)

答えて

0

あなたのエラーは、そう、この正しくピカソロードイメージコードをチェック

FImage.getBetterFeaturedImage().getMedia_details().getSizes().getMedium().toString()

のような間違ったイメージデータをロードするProgramingAdapterクラスPicasso.with(holder.ImgIcon.getContext()).load(FImage.getBetterFeaturedImage().getMedia_details().getSizes().getMedium().toString()).into(holder.ImgIcon);

この行をから来ています以下のように

Picasso.with(context).load(my_data.get(position).getPhoto()) 
      .into(holder.ImgIcon); 

代わりにcontextholder.ImgIcon.getContext()

+0

申し訳ありませんが、動作していません。同じエラーが発生しました。 – Kishan