首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试对.Adapter.ListSourceAdap处的空对象引用调用虚拟方法Model.WebSite.getSources()

尝试对.Adapter.ListSourceAdap处的空对象引用调用虚拟方法Model.WebSite.getSources()
EN

Stack Overflow用户
提问于 2018-06-19 10:28:37
回答 1查看 461关注 0票数 -2

我不知道我在哪里定义了一个空对象,请帮我找出来!它看起来像是我试图使用一个空对象从网站并将其传递给ListSourceAdapter,但我不知道为什么,在哪里和如何修复它,请帮助我。

代码语言:javascript
复制
 java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.example.nutshell.myapplication.Model.WebSite.getSources()' on a null object reference
    at com.example.nutshell.myapplication.Adapter.ListSourceAdapter.getItemCount(ListSourceAdapter.java:106)

ListSourceAdapter (我在这里传递getSource() )

代码语言:javascript
复制
     class ListSourceViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
    ItemClickListener itemClickListener;
    TextView source_title;
    CircleImageView source_image;

    public ListSourceViewHolder(View itemView) {
        super(itemView);

    source_image=(CircleImageView) itemView.findViewById(R.id.source_image);
    source_title=(TextView)itemView.findViewById(R.id.source_name);

    }
public void setItemClickListener(ItemClickListener itemClickListener)
{
    this.itemClickListener=itemClickListener;
}
    @Override
    public void onClick(View v) {
        itemClickListener.onClick(v, getAdapterPosition(),false);
    }
}


public class ListSourceAdapter extends  RecyclerView.Adapter<ListSourceViewHolder> {

private Context context;
private WebSite webSite;
private IconBetterIdeaService mService;

    public ListSourceAdapter(Context context, WebSite webSite) {
        this.context = context;
        this.webSite = webSite;

    mService=Common.getIconService();

    }

    @NonNull
    @Override
    public ListSourceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater=LayoutInflater.from(parent.getContext());
        View itemView=inflater.inflate(R.layout.source_layout,parent,false);
        return new ListSourceViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull final ListSourceViewHolder holder, int position) {
    StringBuilder iconBetterAPI=new StringBuilder(" https://icons.better-idea.org/allicons.json?url=");
    iconBetterAPI.append(webSite.getSources().get(position).getUrl());
    mService.getIconUrl(iconBetterAPI.toString()).enqueue(new Callback<IconBetterIdea>() {
        @Override
        public void onResponse(Call<IconBetterIdea> call, Response<IconBetterIdea> response) {
            if (response.body().getIcons().size() > 0)
            {
                Picasso.with(context)
                        .load(response.body().getIcons().get(0).getUrl()).into(holder.source_image);

            }
        }

        @Override
        public void onFailure(Call<IconBetterIdea> call, Throwable t) {

        }
    });
    holder.source_title.setText(webSite.getSources().get(position).getName());
    holder.setItemClickListener(new ItemClickListener() {
        @Override
        public void onClick(View view, int position, boolean isLongClick) {

            Intent intent=new Intent(context, ListNews.class);
            intent.putExtra("source",webSite.getSources().get(position).getId());
        }
    });
    }

    @Override
    public int getItemCount() {
      return webSite.getSources().size();
    }
}

WebSite.java是:

代码语言:javascript
复制
public class WebSite {

    private String status;
    private List<Source> sources;

    public WebSite() {
    }

    public WebSite(String status, List<Source> sources) {
        this.status = status;
        this.sources = sources;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<Source> getSources() {
        return sources;
    }

    public void setSources(List<Source> sources) {
        this.sources = sources;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-19 13:36:14

getItemCount()方法中,确保webSite已正确初始化。例如

代码语言:javascript
复制
ListSourceAdapter adapter = new ListSourceAdapter(context, new Website());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50919833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档