首页 > 解决方案 > 如何使用改造获得列表的大小?'错误 android.content.res.Resources$NotFoundException: 字符串资源 ID #0x1'

问题描述

我试图在使用改造解析 json 时获取数组的长度,但它返回错误android.content.res.Resources$NotFoundException: String resource ID #0x1

这是我的代码。JobBrowseAdapter.java

public class JobBrowseAdapter extends RecyclerView.Adapter<JobBrowseAdapter.MyViewHolder> {

private List<Job> jobList;
private Context mContext;
private String id;

public JobBrowseAdapter(Context mContext, List<Job> jobs) {
    this.mContext = mContext;
    this.jobList = jobs;
}

@Override
public MyViewHolder onCreateViewHolder( ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_project, viewGroup, false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    Job job = jobList.get(i);
    myViewHolder.title.setText(job.getTitle());
    myViewHolder.skills.setText("Skills: " + job.getSkills());
    myViewHolder.budget.setText(job.getBudget());
    myViewHolder.bid.setText(job.getBid().size());

    myViewHolder.parentLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Job job = jobList.get(i);
            Toast.makeText(mContext, myViewHolder.title.getText(), Toast.LENGTH_SHORT).show();
            Intent intent = new Intent(mContext, DetailsProjectActivity.class);
            intent.putExtra("idProject", job.getId());
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(intent);
            Toast.makeText(mContext, "Tes nih id nya: " + job.getId(), Toast.LENGTH_SHORT).show();
        }
    });
}

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

public class MyViewHolder extends RecyclerView.ViewHolder {
    private TextView title;
    private TextView skills;
    private TextView budget;
    private TextView bid;
    private LinearLayout parentLayout;

    private MyViewHolder(@NonNull View itemView) {
        super(itemView);
        title = (TextView)itemView.findViewById(R.id.tvTitleJob);
        skills = (TextView)itemView.findViewById(R.id.tvSkillsJob);
        budget = (TextView)itemView.findViewById(R.id.tvBudgetJob);
        bid = (TextView)itemView.findViewById(R.id.tvBid_Project);
        parentLayout = (LinearLayout)itemView.findViewById(R.id.parent_browse_project_layout);
    }
}

}

我在myViewHolder.bid.setText(job.getBid().size()); . 我也尝试使用myViewHolder.bid.setText(jobList().size()); 但它仍然给我同样的错误。如何解决这个问题?

标签: androidjsonretrofit

解决方案


而不是做

myViewHolder.bid.setText(job.getBid().size());

做这个

myViewHolder.bid.setText(String.valueOf(job.getBid().size()));

使用整数值调用setText()textview 将使其找到具有正在传递的资源 id 的字符串。在您的代码中,您传递了列表的大小,setText()并且无法在生成的 R.string 类中找到具有该 ID 的资源字符串。


推荐阅读