2017-03-31 11 views
-4

ブログIDを使用してサーバーからJSONオブジェクトを取得しようとしています。現時点では私はこのエラーにjava.lang.NullPointerException:ヌルオブジェクトリファレンスでインタフェースメソッド 'java.util.Iterator java.util.List.iterator()'を呼び出そうとしました。改訂

のjava.lang.NullPointerExceptionを取得しています:ヌルに「java.util.Iteratorのjava.util.List.iterator()

をインターフェイスメソッドを呼び出すための試みを私は間違って何をしている完全なコンテンツを取得するために私は、ポストIDを使用しますか?助けてください!!!

MyBlogアダプタ:

public class MyBlogAdapter extends RecyclerView.Adapter<BlogViewHolder> { 
    List<BlogResponse> postsList; 
    Context context; 
    public static String blog_Id, blogID; 
    private LayoutInflater inflater; 

    public MyBlogAdapter(Context context, List<BlogResponse> postsList){ 
     this.context = context; 
     this.inflater = LayoutInflater.from(context); 
     this.postsList = postsList; 
    } 

    @Override 
    public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(R.layout.custom_view,parent, false); 
     return new BlogViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(BlogViewHolder holder, int position) { 
     final BlogResponse posts= postsList.get(position); 
     holder.summary.setText(posts.getBlogExcerpt().trim().toString()); 
     holder.title.setText(posts.getBlogTitle().trim().toString()); 
     // Glide.with(context).load(posts.getBlogThumbnail()).into(holder.cover); 

     holder.blogHolder.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(context, AnotherSingleView.class); 
       blog_Id = posts.getBlogId(); 
       intent.putExtra(blogID,blog_Id); 
       Log.d("MyblogAdapter","Please check blog Id: "+blog_Id); 

       context.startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     Log.d("MyBlogAdapter,","getItemCount"+postsList.size()); 

     return postsList == null ? (0) : postsList.size(); 
    } 
} 

SecondActivity:

public class AnotherSingleView extends AppCompatActivity { 
    String postID; 
    int position; 
    public TextView blogTitle,blogSub,blogContent; 
    public ImageView blogPic; 
    List<SingleBlogPost> singleBlogPosts; 
    SingleBlogPost singleBlogPost; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_another_single_view); 


     Intent intent = getIntent(); 
     Bundle showBlogId = intent.getExtras(); 
     postID = showBlogId.getString(blogID); 
     Log.d("AnotherSingleView","Please check blog Id: "+postID); 

     singleBlogPosts = new ArrayList<>(); 

     blogContent = (TextView)findViewById(R.id.blog_content); 
     blogSub = (TextView) findViewById(R.id.blog_subtitle); 
     blogTitle =(TextView) findViewById(R.id.blog_title); 
     blogPic =(ImageView) findViewById(R.id.blog_pix); 
     singlePostDisplay(); 

    } 

private void singlePostDisplay() { 
    BlogaPI api = ApiClient.getBlogInterface(); 
    Call<List<SingleBlogPost>> call = api.postResponse(postID); 
    call.enqueue(new Callback<List<SingleBlogPost>>() { 
     @Override 
     public void onResponse(Call<List<SingleBlogPost>> call, Response<List<SingleBlogPost>> response) { 
      singleBlogPosts = response.body(); 
      if (singleBlogPosts != null && !singleBlogPosts.isEmpty()){ 
       for (SingleBlogPost posts : singleBlogPosts){ 
        Log.d("AnotherSingleView","Please check RESPONSE: "+response.body().toString()); 
        blogTitle.setText(posts.getBlogTitle()); 
        blogSub.setText(posts.getBlogSubtitle()); 
        blogContent.setText(posts.getBlogContent()); 
        // Glide.with(AnotherSingleView.this).load(singlepost.getBlogMedimg()).into(blogPic); 
       } 
      } 
      else{ 
       Toast.makeText(AnotherSingleView.this, "Something is empty", Toast.LENGTH_SHORT).show(); 
      }   } 

      @Override 
      public void onFailure(Call<List<SingleBlogPost>> call, Throwable t) { 
       Toast.makeText(AnotherSingleView.this, "check again: "+t.toString(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

インタフェース:

public interface BlogaPI { 
    @GET("blog") 
    Call<BlogList> response(); 

    @GET("post/{blog_id}") 
    Call<List<SingleBlogPost>> postResponse(@Path("blog_id") String blog_id); 
    //Call<List<SingleBlogPost>> postResponse(); 
} 

SingleBl ogPost:

public class SingleBlogPost { 

@SerializedName("blog_id") 
@Expose 
private String blogId; 
@SerializedName("blog_title") 
@Expose 
private String blogTitle; 
@SerializedName("blog_subtitle") 
@Expose 
private String blogSubtitle; 
@SerializedName("blog_excerpt") 
@Expose 
private String blogExcerpt; 
@SerializedName("blog_content") 
@Expose 
private String blogContent; 
@SerializedName("blog_thumbnail") 
@Expose 
private String blogThumbnail; 
@SerializedName("blog_medimg") 
@Expose 
private String blogMedimg; 
@SerializedName("category_title") 
@Expose 
private String categoryTitle; 
public SingleBlogPost(String blogId,String blogTitle, String blogSubtitle, String blogExcerpt, 
         String blogContent, String blogThumbnail, String blogMedimg, String categoryTitle){ 
    this.blogId = blogId; 
    this.blogTitle = blogTitle; 
    this.blogSubtitle = blogSubtitle; 
    this.blogExcerpt = blogExcerpt; 
    this.blogContent = blogContent; 
    this.blogThumbnail = blogThumbnail; 
    this.blogMedimg = blogMedimg; 
    this.categoryTitle = categoryTitle; 
} 

public String getBlogId() { 
    return blogId; 
} 

public void setBlogId(String blogId) { 
    this.blogId = blogId; 
} 

public String getBlogTitle() { 
    return blogTitle; 
} 

public void setBlogTitle(String blogTitle) { 
    this.blogTitle = blogTitle; 
} 

public String getBlogSubtitle() { 
    return blogSubtitle; 
} 

public void setBlogSubtitle(String blogSubtitle) { 
    this.blogSubtitle = blogSubtitle; 
} 

public String getBlogExcerpt() { 
    return blogExcerpt; 
} 

public void setBlogExcerpt(String blogExcerpt) { 
    this.blogExcerpt = blogExcerpt; 
} 

public String getBlogContent() { 
    return blogContent; 
} 

public void setBlogContent(String blogContent) { 
    this.blogContent = blogContent; 
} 

public String getBlogThumbnail() { 
    return blogThumbnail; 
} 

public void setBlogThumbnail(String blogThumbnail) { 
    this.blogThumbnail = blogThumbnail; 
} 

public String getBlogMedimg() { 
    return blogMedimg; 
} 

public void setBlogMedimg(String blogMedimg) { 
    this.blogMedimg = blogMedimg; 
} 

public String getCategoryTitle() { 
    return categoryTitle; 
} 

public void setCategoryTitle(String categoryTitle) { 
    this.categoryTitle = categoryTitle; 
} 

} 
+2

完全なLogcatがないと言うことはできませんが、あなたのコードで見つけることができる唯一のイテレータは 'for(SingleBlogPost posts:singleBlogPosts)'です。 'singleBlogPosts'は' null'です。 'response.body()'が空でないことを確認してください。 –

+3

[NullPointerExceptionとは何か、それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) ) –

答えて

1

チェックあなたはこのようなenhanced for行う前に、サーバーの応答がヌル異なる場合:あなたが質問

if(singleBlogPosts!= null) { 
    for (SingleBlogPosts posts : singleBlogPosts){ 
     Log.d("AnotherSingleView","Please check RESPONSE: "+response.body().toString()); 
     blogTitle.setText(posts.getBlogTitle()); 
     blogSub.setText(posts.getBlogSubtitle()); 
     blogContent.setText(posts.getBlogContent()); 
     // Glide.with(AnotherSingleView.this).load(singlepost.getBlogMedimg()).into(blogPic); 
    } 
} 
+0

'if'文を' singleBlogPost'(小文字のs)を使うように変更してください。クラスではなくインスタンスを参照したいとします。 –

+0

ありがとう@MichaelDodd! –

+0

まだ正しくはありません。キューがいっぱいになるとすぐに編集を提案することはできませんが、 'if(singleBlogPosts!= null &&!singleBlogPosts.isEmpty()){'の後に 'for(SingleBlogPost posts:singleBlogPosts)' –

-2

は、リスト反復子だったが、我々はあなたがどこかで使うリストを参照can`tあなたがそれが存在すると確信が持てるならば、データを取得するためにデータが非同期であったため、あなたはあなたのデータを取得できませんでした。

+0

'iterator'は' List'オブジェクトではなく 'List'オブジェクトをループして参照します。ルイスの答えを見てください。 –

+0

私は '(singleBlogPosts = NULL && singleBlogPosts.isEmpty()!!)であれば追加:他に{(SingleBlogPost記事singleBlogPosts)について { }} { Toast.makeText(AnotherSingleView.this、 "何かが空である" と、Toast.LENGTH_SHORT).show(); } 'となり、elseステートメントが取得されています。何が間違っている可能性があります –

+0

@ekennechilexあなたの元の質問に対するコメントとしてこれを投稿することをお勧めします。つまり、空の応答が返ってきた、つまりリクエストが失敗しています。 –

関連する問題

 関連する問題