当前位置: 首页 > 知识库问答 >
问题:

java中的静态编程语言方法

汪和悌
2023-03-14

我正在尝试用Java编写下面用Kotlin编写的代码。我无法创建DefaultElementsAdapter,因为我无法获得正确的语法。

HtmlRecycler.Builder(this@MainActivity)  
    .setSource(networkSource)  
    .setAdapter(DefaultElementsAdapter(this@MainActivity) { element, i, view ->  
    }})
    .setRecyclerView(recyclerView)  
    .setLoadingCallback(object : HtmlRecycler.LoadCallback {  
        override fun onLoadingStart() {  
            progressBar.visibility = View.VISIBLE  
        }  
        override fun onLoaded(document: Document?) {  
            progressBar.visibility = View.GONE
    }  
    })  
    .build()

我无法获得正确的Java代码

    DefaultElementsAdapter adapter = new DefaultElementsAdapter(this, 

 /****How to create the kotlin adapter here****/


    );

            HtmlRecycler.Builder builder = new HtmlRecycler.Builder(this);
            builder.setSource(new StringSource(item.contentDescription))
                    .setRecyclerView(recyclerView)
                    .setAdapter(adapter)
            .build();

Kotlin班是这样的

public final class DefaultElementsAdapter public constructor(context: android.content.Context, onClick: (m7mdra.com.htmlrecycler.elements.Element, kotlin.Int, android.view.View) -> kotlin.Unit) : m7mdra.com.htmlrecycler.adapter.ElementsAdapter {
    private final val context: android.content.Context /* compiled code */

    private final val onClick: (m7mdra.com.htmlrecycler.elements.Element, kotlin.Int, android.view.View) -> kotlin.Unit /* compiled code */

    public open fun onBindElement(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: kotlin.Int): kotlin.Unit { /* compiled code */ }

    public open fun onCreateElement(parent: android.view.ViewGroup, elementType: m7mdra.com.htmlrecycler.elements.ElementType): androidx.recyclerview.widget.RecyclerView.ViewHolder { /* compiled code */ }
}

我正在尝试使用图书馆https://github.com/m7mdra/HtmlRecycler

共有1个答案

南门英飙
2023-03-14

DefaultElementAdapter构造函数期望其第二个参数是(Element, Int, View)类型的函数-

如果在Android项目中启用了Java 8支持,则可以使用lambda表达式提供所需的函数:

DefaultElementsAdapter adapter = new DefaultElementsAdapter(this, (element, i, view) -> {
    // your code
    return Unit.INSTANCE;
});

如果您不支持Java 8并且无法使用lambdas,则始终可以创建一个Function3对象:

DefaultElementsAdapter adapter = new DefaultElementsAdapter(this, new Function3<Element, Integer, View, Unit>() {
    @Override
    public Unit invoke(Element element, Integer integer, View view) {
        // your code
        return Unit.INSTANCE;
    }
});

请注意,很遗憾,您必须返回单位。在这两种情况下都是Java中的实例。这里已经解释了这种需要背后的原因。

 类似资料:
  • 在Kotlin中,我覆盖了这两个Google登录功能: 检查与谷歌的连接是否失败。 问题是,有时当我关闭包含用户帐户的对话框时,该对话框会在活动启动时弹出 像这样: 我得到了一个带有以下logcat的<code>IllegalArgumentException</code> E/AndroidRuntime:致命异常:主进程:com.dancam.subscriptions,PID:6346 Ja

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 是否可以在中的class中添加一个新的静态方法?通常,由于Kotlin Extensions,这样的事情在Kotlin中是可能的。 我已经尝试在一个名为的文件中执行以下操作: 但<code>数学。无法解析同伴。。。

  • 正如标题所说,我正在尝试将Java和Kotlin混合在一个项目中。这里有一个很好的例子。混合java kotlin hello world。除了kotlin在src/main/Java/somepackage/SomeClass中找不到我的任何Java类之外,所有的东西都正常工作。Java语言 这是什么原因? 我的身材。gradle看起来像这样 而不是开始尝试在更大的项目上实现这一点。我试图通过创

  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。