시도

2017-12-04 7 views
-1

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)

답변

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