Open
Description
I'm trying to wrap RecyclerView.Adapter in Android and create the row view from Swift and pass it to Java via JNI. Unfortunately on the Java / Kotlin side the returned value is always null.
RecyclerViewAdapter.kt
// Create new views (invoked by the layout manager)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewAdapter.ViewHolder {
val viewHolder = onCreateViewHolderSwift(parent, viewType)
checkNotNull(viewHolder)
checkNotNull(viewHolder.itemView)
return viewHolder
}
RecyclerViewAdapter.swift
@JavaImplementation("com.pureswift.swiftandroid.RecyclerViewAdapter")
extension RecyclerViewAdapter {
@JavaMethod
public func onCreateViewHolderSwift(_ viewGroup: ViewGroup?, _ viewType: Int32) -> RecyclerViewAdapter.ViewHolder? {
log("\(self).\(#function) \(viewType)")
let viewHolder = callback.onCreateViewHolder(viewGroup!, viewType)
log("\(self).\(#function) Created \(viewHolder.getClass().getName()) \(viewHolder.itemView.getClass().getName())")
return viewHolder
}
I've verified from the Swift side that the Java Object I'm returning is a valid instance, and print their Java class name. But the checkNotNull()
still fails on the JVM side.
16:57:54.394 D SwiftAndroidApp.RecyclerViewAdapter.onCreateViewHolderSwift(_:_:) Created com.pureswift.swiftandroid.RecyclerViewAdapter$ViewHolder android.widget.TextView
16:57:54.394 D Shutting down VM
16:57:54.395 E FATAL EXCEPTION: main
Process: com.pureswift.swiftandroid, PID: 7551
java.lang.IllegalStateException: Required value was null.
Metadata
Metadata
Assignees
Labels
No labels