@@ -21,6 +21,8 @@ open class MainActivity: AndroidApp.Activity {
2121
2222 lazy var listView = ListView ( self )
2323
24+ lazy var recyclerView = RecyclerView ( self )
25+
2426 var runnable: AndroidJavaLang. Runnable!
2527
2628 //lazy var timer = AndroidJavaUtil.Timer()
@@ -49,13 +51,7 @@ private extension MainActivity {
4951 startMainRunLoop ( )
5052 setRootView ( )
5153
52- // update view on timer
53- Task { [ weak self] in
54- while let self {
55- await self . updateTextView ( )
56- try ? await Task . sleep ( for: . seconds( 1 ) )
57- }
58- }
54+
5955 }
6056
6157 func runAsync( ) {
@@ -80,17 +76,27 @@ private extension MainActivity {
8076 }
8177
8278 func setRootView( ) {
79+ setRecyclerView ( )
80+ }
81+
82+ func setTextView( ) {
8383 setRootView ( textView)
84- Task {
85- await updateTextView ( )
84+ // update view on timer
85+ Task { [ weak self] in
86+ while let self {
87+ await self . updateTextView ( )
88+ try ? await Task . sleep ( for: . seconds( 1 ) )
89+ }
8690 }
8791 }
8892
8993 func setListView( ) {
9094 let items = [
9195 " Row 1 " ,
9296 " Row 2 " ,
93- " Row 3 "
97+ " Row 3 " ,
98+ " Row 4 " ,
99+ " Row 5 "
94100 ]
95101 let layout = try ! JavaClass < R . layout > ( )
96102 let resource = layout. simple_list_item_1
@@ -106,6 +112,44 @@ private extension MainActivity {
106112 setRootView ( listView)
107113 }
108114
115+ func setRecyclerView( ) {
116+ let items = [
117+ " Row 1 " ,
118+ " Row 2 " ,
119+ " Row 3 " ,
120+ " Row 4 " ,
121+ " Row 5 "
122+ ]
123+ let callback = RecyclerViewAdapter . Callback (
124+ onCreateViewHolder: { ( parent, viewType) in
125+ 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)
135+ } ,
136+ onBindViewHolder: { ( holder, position) in
137+ guard let viewHolder = holder. as ( RecyclerViewAdapter . ViewHolder. self) else {
138+ return
139+ }
140+ let data = items [ Int ( position) ]
141+ viewHolder. itemView. as ( TextView . self) ? . text = data
142+ } ,
143+ getItemCount: {
144+ Int32 ( items. count)
145+ }
146+ )
147+ let adapter = RecyclerViewAdapter ( callback)
148+ recyclerView. setLayoutManager ( LinearLayoutManager ( self ) )
149+ recyclerView. setAdapter ( adapter)
150+ setRootView ( recyclerView)
151+ }
152+
109153 @MainActor
110154 func updateTextView( ) {
111155 log ( " \( self ) . \( #function) " )
0 commit comments