如何解决太多的公共抽象乐趣入队参数responseCallback:Callback:okhttp3.Call中定义的单元

问题描述

我遵循有关kotlin编程语言解析API的本教程:https://www.youtube.com/watch?v=2W41M9fWf6I&list=PL0dzCUj1L5JGfHj1lwxOq67zAJV3e1S9S&index=5

并且为了跟随下面的教程链接,我使用androidx api版本30

但是我大约在14:54被困住了

"client.newCall(request).enqueue(object : Callback){

        }"

在CourseDetailActivity的第(45)行出现错误

错误是:

Too many arguments for public abstract fun enqueue(responseCallback: Callback): Unit defined in   okhttp3.Call

这是我的CourseDetailActivity:

class CourseDetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

//        recyclerView_main.setBackgroundColor(Color.RED)
        recyclerView_main.layoutManager = linearlayoutmanager(this)
        recyclerView_main.adapter = CourseDetailAdapter()

        val navbarTitle = intent.getStringExtra(CustumViewHolder.VIDEO_TITLE_KEY)
        supportActionBar?.title = navbarTitle


//        println(courseDetailUrl)

        fetcJson()


    }

    private fun fetcJson() {
        val videoID = intent.getIntExtra(CustumViewHolder.VIDEO_ID_KEY,-1)
        val courseDetailUrl = "https://api.letsbuildthatapp.com/youtube/course_detail?id=" + videoID

        val client = OkHttpClient()
        val request = Request.Builder().url(courseDetailUrl).build()
        client.newCall(request).enqueue(object : Callback){

        }
    }


    private class CourseDetailAdapter : RecyclerView.Adapter<CourseLessonViewHolder>() {
        override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): CourseLessonViewHolder {


            val layoutInflater = LayoutInflater.from(parent?.context)
            val custumView = layoutInflater.inflate(R.layout.course_lesson_row,parent,false)

//            val blueView = View(parent?.context)
//            blueView.setBackgroundColor(Color.RED)
//            blueView.minimumHeight = 50
            return CourseLessonViewHolder(custumView)


        }

        override fun getItemCount(): Int {
            return 5
        }

        override fun onBindViewHolder(holder: CourseLessonViewHolder,position: Int) {

        }


    }
}

private class CourseLessonViewHolder(val custumView: View) : RecyclerView.ViewHolder
    (custumView) {

}

这是我的MainAdapter.kt类:

class MainAdapter(val homeFeed: HomeFeed) : RecyclerView.Adapter<CustumViewHolder>() {

    val videoTitles = listof("First Title","Second","3rd")

    override fun getItemCount(): Int {
        return homeFeed.videos.count()
    }

    override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): CustumViewHolder {
        val layoutInflater = LayoutInflater.from(parent?.context)
        val cellForRow = layoutInflater.inflate(R.layout.video_row,false)
        return CustumViewHolder(cellForRow)
    }

    override fun onBindViewHolder(holder: CustumViewHolder,position: Int) {

        val video = homeFeed.videos.get(position)
        holder?.view?.textView_video_title?.text = video.name

        holder?.view?.textview_channel_name?.text =
            video.channel.name + "+" + "20k Views\n" + "2 days ago"

        val thumbnailImageView = holder?.view?.imageView_video_thumbnail

        Picasso.get().load(video.imageUrl).into(thumbnailImageView)


        val channelProfileImageView = holder?.view?.imageView_channel_profile
        Picasso.get().load(video.imageUrl).into(channelProfileImageView)

        holder?.video = video

    }
}

class CustumViewHolder(val view: View,var video: Video? = null) : RecyclerView.ViewHolder(view) {
    companion object {
        val VIDEO_TITLE_KEY = "VIDEO_TITLE"
        val VIDEO_ID_KEY = "VIDEO_ID"
    }

    init {
        view.setonClickListener {
            val intent = Intent(view.context,CourseDetailActivity::class.java)

            intent.putExtra(VIDEO_TITLE_KEY,video?.name)
            intent.putExtra(VIDEO_ID_KEY,video?.id)

            view.context.startActivity(intent)
        }
    }

}

解决方法

您在实现接口“回调”的匿名类中犯了一个错误。

相反

<html>
<body>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/require1k.min.js"></script>
<script>

    R(function (require,module,exports) {
        const {SimpleTest} = require("./target/ng-demo.cjs");
        new SimpleTest("commonjs");
    });
</script>
</body>
</html>

使用此

client.newCall(request).enqueue(object : Callback){

}