REST API를 XML시도
글 [ { "ID": 16344, "날짜": "2017-11 "017-11-29T12 : 45 : 58", "date_gmt": "2017-11-29T07 : 15 : 58", "수정 됨" 11-29T07 : 15 : 58 " "타입 ""후 " "제목 "{ ": "{ " " 콘텐츠 렌더링은" "이 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는 {
,679,738 AppCompatActivity를 확장 231,693,210}
오류
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.자바 : 20)
미안하지만 작동하지 않습니다. 같은 오류가 발생했습니다. 감사합니다. – Kishan