问题描述
我正在尝试按照tutorial在Android Studio中使用Recyclerview和Cardview做一个简单的项目。
但是我在onBindViewHolder
功能行32中遇到错误,说它无法解析setText()
中的方法imageView
,而且我不知道为什么,因为mTitle
不是ImageView
就是TextView
:
package com.example.demoproject;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import android.content.Context;
public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
Context c;
ArrayList<Model> models; // this array list creates a list of arrays which parameters define in my model class
public MyAdapter(Context c,ArrayList<Model> models) {
this.c = c;
this.models = models;
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row,null); // this line inflate my row
return new MyHolder(view); // this will return my view to holder class
}
@Override
public void onBindViewHolder(@NonNull MyHolder myHolder,int i) {
myHolder.mTitle.setText(models.get(i).getTitle()); // here i is position
}
@Override
public int getItemCount() {
return 0;
}
}
MyHolder.java:
package com.example.demoproject.
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class MyHolder extends RecyclerView.ViewHolder {
ImageView mImaeView,mTitle;
public MyHolder(@NonNull View itemView) {
super(itemView);
this.mImaeView = itemView.findViewById(R.id.imageIv);
this.mTitle = itemView.findViewById(R.id.titleTv);
}
}
解决方法
您的mTile
不是TextView
,而是ImageView
。更改为此:
ImageView mImaeView;
TextView mTitle;
并确保itemView.findViewById(R.id.titleTv);
返回TextView
。检入您的xml文件(回收者视图项目),确认它进展良好,并且titleTv
是TextView
因为setText()方法是在textview中设置的,而不是在imageView中设置的