错误: XXXAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int)

一、问题描述

        在学习Android可侧滑删除的RecyclerView的时候,遇到了下面的报错

错误: SwipeDelAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int)
public class SwipeDelAdapter extends RecyclerView.Adapter {
       ^

        在上面的报错中,SwipeDelAdapter是我自定义的Adapter类。

        当我尝试通过Alt+Enter键修改代码时,Android Studio建议我实现onBindViewHolder这个方法。开发界面中的报错一共有两个:

        而我的代码为

package com.cs.blackbox.adapter;import android.annotation.SuppressLint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import com.cs.blackbox.R;import java.util.List;import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;public class SwipeDelAdapter extends RecyclerView.Adapter {private List list;private onAdapterItemClickListener itemClickListener;public SwipeDelAdapter(List list) {this.list = list;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text,parent,false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, @SuppressLint("RecyclerView") final int position) {holder.sda_tv_content.setText(list.get(position).toString());holder.sda_tv_content.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {itemClickListener.onItemClick(view,position);}});holder.sda_tv_delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {itemClickListener.onItemClick(view,position);}});}@Overridepublic int getItemCount() {return list.size();}static class ViewHolder extends RecyclerView.ViewHolder{TextView sda_tv_content, sda_tv_delete;public ViewHolder(@NonNull View itemView) {super(itemView);sda_tv_content=itemView.findViewById(R.id.sda_tv_content);sda_tv_delete=itemView.findViewById(R.id.sda_tv_delete);}}public void reFreshData(List list){this.list=list;notifyDataSetChanged();}public interface onAdapterItemClickListener{void onItemClick(View view,int selectPosition);}public void setItemClickListener(onAdapterItemClickListener itemClickListener) {this.itemClickListener = itemClickListener;}
}

        布局文件(item_text.xml)的代码为

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/sda_tv_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:text="数据"android:textSize="18sp"android:padding="15dp" /><TextViewandroid:id="@+id/sda_tv_delete"android:layout_width="60dp"android:layout_height="match_parent"android:background="#FF0000"android:gravity="center"android:paddingEnd="16dp"android:paddingStart="16dp"android:textColor="@color/white"android:text="删除"android:textSize="18sp"/>
</LinearLayout>

        我通过网络搜索尝试了一些办法,但是没能解决。例如,参考博客Android踩坑的解决方案:将ViewHolder写到外面,使它作为一个与Adapter类同级的静态内部类,而不要放在Adapter类里面。该方案无法解决我的问题。以及,参考博客BaseRecyAdapter不是抽象的的解决方案:将ViewHolder类改为public static。该方案还是无法解决我的问题。

二、我的解决方法(仅供参考)

        1、将ViewHolder类还是放在Adapter类的内部。

        2、将XXXAdapter的继承修改一下,原来是这样继承的:

public class SwipeDelAdapter extends RecyclerView.Adapter{}

        把它改成这样(添加一个<XXXAdaper.XXXViewHolder>,其中XXXAdapter和XXXViewHolder都是自定义的类,名字根据大家的项目和用途会有所不同):

public class SwipeDelAdapter extends RecyclerView.Adapter<SwipeDelAdapter.ViewHolder> {}

        然后我的项目就build成功了。运行效果:

三、参考

        1、Android RecyclerView 二级列表侧滑简单实现,主要是参考了这一份代码。然而,这份代码的坑太多。

        2、天生要强注定要凉的博客

        3、Qin小宝的博客

        4、9527xiha的博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59223.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么做思维导图?试试这种绘制方法

怎么做思维导图&#xff1f;思维导图是一种非常实用的工具&#xff0c;可以帮助我们更好地整理思路、总结知识和规划方案。但是传统的手绘或电脑软件绘制思维导图的方法需要一定的时间和技能&#xff0c;对于想要快速制作思维导图的人来说可能不太方便。下面就给大家介绍一种在…

提升客户满意度的创意项目管理软件推荐!

发现功能强大的工作管理软件&#xff0c;让创意大放异彩。将您团队的愿景变成引人注目的项目。 一、交付总是令人印象深刻的工作 Zoho Projects的创意项目管理软件可帮助您和您的团队在一个地方监督多个项目。使用我们的内置管理工具和模板&#xff0c;花更少的时间在管理上&a…

ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义

背景&#xff1a;本文是对上一个文章的补充&#xff0c;在源码编译之前&#xff0c;项目是有完整的ffmpeg编译脚本的&#xff0c;只不过新增了断点调试ffmpeg&#xff0c;所以产生的上面的文章&#xff0c;也就是说&#xff0c;我在用make编译成功后&#xff0c;再去做的源码编…

内生安全构建数据存储

一、数据安全成为防护核心&#xff0c;存储安全防护不容有失 1、数据作为企业的核心资产亟需重点保护&#xff0c;数据安全已成网络空间防护核心 2、国家高度重视关键信息基础设施的数据安全&#xff0c;存储安全已成为审核重点 二、存储安全是数据安全的关键一环&#xff0c;应…

电商数据搬运工具:电商数据API接口,轻松搬运淘宝京东拼多多百万商品

随着电商行业的发展&#xff0c;越来越多的商家开始选择在线销售渠道&#xff0c;而电商平台也随之崛起。很多商家都是同时在多个电商平台有店铺&#xff0c;为了方便商家管理和维护店铺&#xff0c;商家 需要在多平台直接实现数据同步和数据搬运。 一、电商数据搬运的概念 电…

自动化处理,web自动化测试处理多窗口+切换iframe框架页总结(超细整理)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 web 自动化之处理…

MySQL的第一篇文章——了解数据库、简单的SQL语句

目录 学习目标 第一章 介绍数据库 1. 数据库概述 2. MySQL概述 第二章 MySQL的使用 1. MySQL服务的启动 2. 客户端连接MySQL 2.1 命令行客户端 第三章 SQL的介绍 1. 什么是SQL 2. SQL的分类 3. MySQL的语法规范和要求 第四章 DDL操作数据库 1. 创建数据库 2. 查…

RIFF WAVE 格式解析

一、综述 WAVE文件作为多媒体中使用的声波文件格式之一&#xff0c;它是以RIFF格式为标准的。 RIFF是英文Resource Interchange File Format的缩写&#xff0c;每个WAVE文件的头四个 字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括&am…

机器学习、深度学习项目开发业务数据场景梳理汇总记录二

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理&#xff0c;文章会随着项目的开发推进不断更新。 这里是续文&#xff0c;因为CSDN单篇文章内容太大的话就会崩溃的&#xff0c;别问我怎么知道的&#xff0c;问就是血泪教训&#xff0c;辛辛苦苦写了一…

【QT】 QT开发PDF阅读器

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT开发PDF阅读器技术&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点…

基于MATLAB小波变换的信号突变点检测

之前在不经意间也有接触过求突变点的问题。在我看来&#xff0c;与其说是求突变点&#xff0c;不如说是我们常常玩的"找不同"。给你两幅图像&#xff0c;让你找出两个图像中不同的地方&#xff0c;我认为这其实也是找突变点在生活中的应用之一吧。回到找突变点位置上…

强化学习研究 PG

由于一些原因&#xff0c; 需要学习一下强化学习。用这篇博客来学习吧&#xff0c; 用的资料是李宏毅老师的强化学习课程。 深度强化学习(DRL)-李宏毅1-8课&#xff08;全&#xff09;_哔哩哔哩_bilibili 这篇文章的目的是看懂公式&#xff0c; 毕竟这是我的弱中弱。 强化…