首页 > 解决方案 > 当我运行下面的代码时,我收到了适配器错误,我尝试通过查看 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);

标签: android

解决方案


您没有为 GridAdapter 类提供任何可变名称。这就是您收到此错误的原因。首先,您必须像这样在全球范围内声明它 GridAdapter gridAdapter;

然后你应该在你内部实例化 onCreate() 方法,比如

 gridAdapter = new GridAdapter(this,titles,images);

这将是您问题的解决方案。


推荐阅读