Skip to content

Commit 42e260a

Browse files
committed
Fix RecyclerViewAdapter
1 parent b8b9cde commit 42e260a

File tree

3 files changed

+19
-44
lines changed

3 files changed

+19
-44
lines changed

Demo/app/src/main/java/com/pureswift/swiftandroid/RecyclerViewAdapter.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,26 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder
88
class RecyclerViewAdapter(val swiftObject: SwiftObject) :
99
RecyclerView.Adapter<ViewHolder>() {
1010

11-
class ViewHolder(view: View, val swiftObject: SwiftObject) : RecyclerView.ViewHolder(view) {
11+
class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
1212

1313
}
1414

1515
// Create new views (invoked by the layout manager)
1616
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewAdapter.ViewHolder {
1717
val viewHolder = onCreateViewHolderSwift(parent, viewType)
18-
check(viewHolder.itemView != null) {
19-
("ViewHolder.itemView == nil")
20-
}
18+
checkNotNull(viewHolder)
19+
checkNotNull(viewHolder.itemView)
2120
return viewHolder
2221
}
2322

2423
external fun onCreateViewHolderSwift(parent: ViewGroup, viewType: Int): RecyclerViewAdapter.ViewHolder
2524

2625
// Replace the contents of a view (invoked by the layout manager)
2726
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
28-
onBindViewHolderSwift(holder, position)
27+
onBindViewHolderSwift(holder as RecyclerViewAdapter.ViewHolder, position)
2928
}
3029

31-
external fun onBindViewHolderSwift(holder: RecyclerView.ViewHolder, position: Int)
30+
external fun onBindViewHolderSwift(holder: RecyclerViewAdapter.ViewHolder, position: Int)
3231

3332
// Return the size of your dataset (invoked by the layout manager)
3433
override fun getItemCount(): Int {

Demo/app/src/main/swift/MainActivity.swift

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,9 @@ private extension MainActivity {
123123
let callback = RecyclerViewAdapter.Callback(
124124
onCreateViewHolder: { (parent, viewType) in
125125
let context = parent.getContext()
126-
//let linearLayout = LinearLayout(context)
127-
//let textView = TextView(context)
128-
//linearLayout.addView(textView)
129-
//parent.addView(linearLayout)
130-
let listItemView = try! JavaClass<LayoutInflater>()
131-
.from(context)
132-
.inflate(JavaClass<R.layout>().simple_list_item_1, parent, false)!
133-
134-
return RecyclerViewAdapter.ViewHolder(listItemView, view: listItemView)
126+
let textView = TextView(context)
127+
let viewHolder = RecyclerViewAdapter.ViewHolder(textView)
128+
return viewHolder
135129
},
136130
onBindViewHolder: { (holder, position) in
137131
guard let viewHolder = holder.as(RecyclerViewAdapter.ViewHolder.self) else {

Demo/app/src/main/swift/RecyclerView.swift

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ open class RecyclerViewAdapter: RecyclerView.Adapter<RecyclerView.ViewHolder> {
2121
extension RecyclerViewAdapter {
2222

2323
@JavaMethod
24-
public func onCreateViewHolderSwift(_ viewGroup: ViewGroup?, _ viewType: Int32) -> RecyclerView.ViewHolder? {
24+
public func onCreateViewHolderSwift(_ viewGroup: ViewGroup?, _ viewType: Int32) -> RecyclerViewAdapter.ViewHolder? {
2525
log("\(self).\(#function) \(viewType)")
26-
return callback.onCreateViewHolder?(viewGroup!, viewType)
26+
let viewHolder = callback.onCreateViewHolder(viewGroup!, viewType)
27+
log("\(self).\(#function) Created \(viewHolder.getClass().getName()) \(viewHolder.itemView.getClass().getName())")
28+
return viewHolder
2729
}
2830

2931
@JavaMethod
30-
public func onBindViewHolderSwift(_ viewHolder: RecyclerView.ViewHolder?, _ position: Int32) {
32+
public func onBindViewHolderSwift(_ viewHolder: RecyclerViewAdapter.ViewHolder?, _ position: Int32) {
3133
log("\(self).\(#function) \(position)")
32-
callback.onBindViewHolder?(viewHolder!, position)
34+
callback.onBindViewHolder(viewHolder!, position)
3335
}
3436

3537
@JavaMethod
@@ -71,15 +73,15 @@ public extension RecyclerViewAdapter {
7173

7274
struct Callback {
7375

74-
var onCreateViewHolder: ((ViewGroup, Int32) -> RecyclerView.ViewHolder)?
76+
var onCreateViewHolder: ((ViewGroup, Int32) -> RecyclerViewAdapter.ViewHolder)
7577

76-
var onBindViewHolder: ((RecyclerView.ViewHolder, Int32) -> ())?
78+
var onBindViewHolder: ((RecyclerViewAdapter.ViewHolder, Int32) -> ())
7779

7880
var getItemCount: () -> Int32
7981

8082
public init(
81-
onCreateViewHolder: ((ViewGroup, Int32) -> RecyclerView.ViewHolder)? = nil,
82-
onBindViewHolder: ((RecyclerView.ViewHolder, Int32) -> Void)? = nil,
83+
onCreateViewHolder: @escaping ((ViewGroup, Int32) -> RecyclerViewAdapter.ViewHolder),
84+
onBindViewHolder: @escaping ((RecyclerViewAdapter.ViewHolder, Int32) -> Void),
8385
getItemCount: @escaping () -> Int32 = { return 0 }
8486
) {
8587
self.onCreateViewHolder = onCreateViewHolder
@@ -112,26 +114,6 @@ extension RecyclerViewAdapter {
112114
open class ViewHolder: RecyclerView.ViewHolder {
113115

114116
@JavaMethod
115-
@_nonoverride public convenience init(view: AndroidView.View?, swiftObject: SwiftObject?, environment: JNIEnvironment? = nil)
116-
117-
@JavaMethod
118-
func getSwiftObject() -> SwiftObject!
119-
}
120-
}
121-
122-
public extension RecyclerViewAdapter.ViewHolder {
123-
124-
convenience init(_ value: Any, view: AndroidView.View?, environment: JNIEnvironment? = nil) {
125-
let swiftObject = SwiftObject(value, environment: environment)
126-
self.init(view: view, swiftObject: swiftObject, environment: environment)
127-
}
128-
129-
var value: Any {
130-
get {
131-
getSwiftObject().valueObject().value
132-
}
133-
set {
134-
getSwiftObject().valueObject().value = newValue
135-
}
117+
@_nonoverride public convenience init(view: AndroidView.View?, environment: JNIEnvironment? = nil)
136118
}
137119
}

0 commit comments

Comments
 (0)