android - 当我运行下面的代码时,我收到了适配器错误,我尝试通过查看 yt 视频来解决它....仍然无法正常工作
问题描述
当我运行下面的代码时,我收到了适配器错误,我尝试通过查看 youtube 视频来解决它....仍然无法正常工作,它显示适配器是抽象的,所以错误就在那里。我附在下面。请给这个问题最相关的解决方案。
这是我的 GridAdapter.java 代码
public class GridAdapter extends RecyclerView.Adapter<GridAdapter.ViewHolder> {
List<String>titles;
List<Integer>images;
LayoutInflater inflater;
public GridAdapter(Context context,List<String>titles,List<Integer>images){
this.titles = titles;
this.images = images;
this.inflater = LayoutInflater.from(context);
}
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.intoduction,parent,false);
return new ViewHolder(view);
}
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.titles.setText(titles.get(position));
holder.images.setImageResource(images.get(position));
}
public int getItemCount() {
return titles.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView titles;
ImageView images;
public ViewHolder(@NonNull View itemView) {
super(itemView);
titles = itemView.findViewById(R.id.textView15);
images = itemView.findViewById(R.id.imageView4);
}
}
}
这是我的 MainActivity2.java 代码
public class MainActivity2 extends AppCompatActivity {
RecyclerView recycleview1;
List<String> titles;
List<Integer>images;
Adapter GridAdapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intropage);
recycleview1 = findViewById(R.id.recycleview1);
titles = new ArrayList<>();
images = new ArrayList<>();
titles.add("first item");
titles.add("second item");
titles.add("third item");
titles.add("fourth item");
images.add(R.drawable.bheeshma);
images.add(R.drawable.sadak2);
images.add(R.drawable.tanhaji);
images.add(R.drawable.thappad);
GridAdapter = **new Adapter(this,titles,images);**
GridLayoutManager gridLayoutManager = new
GridLayoutManager(this,2,GridLayoutManager.VERTICAL,false);
recycleview1.setLayoutManager(gridLayoutManager);
recycleview1.setAdapter(**GridAdapter**);
}
}
这是我得到的错误
Adapter is abstract; cannot be instantiated
GridAdapter = new Adapter(this,titles,images);
解决方案
您没有为 GridAdapter 类提供任何可变名称。这就是您收到此错误的原因。首先,您必须像这样在全球范围内声明它
GridAdapter gridAdapter;
然后你应该在你内部实例化 onCreate() 方法,比如
gridAdapter = new GridAdapter(this,titles,images);
这将是您问题的解决方案。