Java 调用onBindViewHolder()和onCreateViewHolder()时循环查看

Java 调用onBindViewHolder()和onCreateViewHolder()时循环查看,java,android,Java,Android,这是我的代码,我不知道为什么它现在不工作。songs是一个简单的java类,它包含getter setter 在从JSON获取数据之前,我尝试在recycleView中静态添加数据,效果非常好 这是代码 使用volley解析JSON的代码 private void loadData() { 字符串url=”http://homejobs.live/mydata.php"; StringRequest StringRequest=新的StringRequest(Request.Method.GET

这是我的代码,我不知道为什么它现在不工作。songs是一个简单的java类,它包含getter setter

在从
JSON
获取数据之前,我尝试在recycleView中静态添加数据,效果非常好

这是代码

使用volley解析JSON的代码

private void loadData()
{
字符串url=”http://homejobs.live/mydata.php";
StringRequest StringRequest=新的StringRequest(Request.Method.GET,url,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
JSONArray JSONArray=新JSONArray(响应);
Log.d(“test”,String.valueOf(jsonArray));
Log.d(“test”,String.valueOf(jsonArray.length());
for(int i=0;i
回收器\u视图\u适配器类

公共类回收器\u视图\u适配器扩展了RecyclerView.adapter{
私有ArrayList数据集;
公共静态类MyViewHolder扩展了RecyclerView.ViewHolder{
公共静态文本视图文本视图名称;
公共静态图像视图图像视图图标;
公共MyViewHolder(查看项目视图){
超级(项目视图);
this.textViewName=(TextView)itemView.findViewById(R.id.TextView);
this.imageViewIcon=(ImageView)itemView.findViewById(R.id.imageView3);
}
}
公共回收器\视图\适配器(ArrayList数据){
this.dataSet=数据;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType)
{
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.card,父级,假);
view.setOnClickListener(track.myOnClickListener);
MyViewHolder MyViewHolder=新的MyViewHolder(视图);
返回myViewHolder;
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int位置){
Log.d(“hy”,“test”);
songs songsData=dataSet.get(位置);
MyViewHolder.textViewName.setText(songsData.getName());
System.out.println(“hello”+位置);
毕加索
.load(songsData.getImage())
.into(MyViewHolder.imageViewIcon);
}
@凌驾
public int getItemCount()
{
返回dataSet.size();
}
}

在onBindViewHolder中,更改以下代码

MyViewHolder.textViewName.setText(songsData.getName());
    System.out.println("hello"+position);

    Picasso.get()
            .load(songsData.getImage())
            .into(MyViewHolder.imageViewIcon);
以下

holder.textViewName.setText(songsData.getName());
    System.out.println("hello"+position);

    Picasso.get()
            .load(songsData.getImage())
            .into(holder.imageViewIcon);
在代码中,您试图使用类名访问textview。相反,您应该使用
holder
变量

另外,请检查您是否正确解析json。检查

data.add(item);
在api中,正在执行响应。
另一个建议是在适配器构造函数中检查数据集数组的大小。

尝试将onBindViewHolder替换为此

public void onBindViewHolder(final MyViewHolder holder,  final int position) {
    Log.d("hy","test");
    songs songsData = dataSet.get(position);


    holder.textViewName.setText(songsData.getName());
    System.out.println("hello"+position);

    Picasso.get()
            .load(songsData.getImage())
            .into(holder.imageViewIcon);
}

之前:adapter=new recycler\u view\u adapter(数据);。。。检查日志中的data.size()…我尝试不显示任何内容。。尽管它在jsonObject中显示数据。。如果data.size()为0,则应检查api响应。在
onBindViewHolder
中,不要使用
MyViewHolder
,但
holder
感谢您解决了问题
holder.textViewName.setText(songsData.getName());
    System.out.println("hello"+position);

    Picasso.get()
            .load(songsData.getImage())
            .into(holder.imageViewIcon);
data.add(item);
public void onBindViewHolder(final MyViewHolder holder,  final int position) {
    Log.d("hy","test");
    songs songsData = dataSet.get(position);


    holder.textViewName.setText(songsData.getName());
    System.out.println("hello"+position);

    Picasso.get()
            .load(songsData.getImage())
            .into(holder.imageViewIcon);
}