Convert to List Convert the List design to iOS/Android code.
List to Swift/Android code
If you need to display scrolling elements dynamically, you should check if they are lists or grids . You can find how to understand the difference here . If you have decided that you want to create lists, this is right please to read.
An example of a list is below. In the image, the cell prototype repeats itself with different data inside.
Lists are called different names in iOS and Android. They are explained below with the code and details.
Generated code for iOS/Android and Details
iOS Android
TableView
Lists are called inTableView
Swift language. With TableView
, you can view a group that aligns all children in a single direction. InTableView
, no matter how wide they are, the vertical list has only one child per row, and your list will only be the one-row height(Height of the tallest child + padding).
CellPrototype
wraps a layout and will often be the container used in a layout for each item within a TableView
. Let's check the generated code.
TableView is added to the page's View Controller file.
ListPageViewController.swift
Copy import UIKit
class ListPageViewController : UIViewController {
//Connection from an Interface Builder to a UI component
@IBOutlet private weak var explorePostsTableView: UITableView !
override func viewDidLoad () {
super. viewDidLoad ()
setupViews ()
}
}
extension ListPageViewController {
private func setupViews () {
//TableView properties
self.explorePostsTableView.rowHeight = UITableView.automaticDimension
self.explorePostsTableView.estimatedRowHeight = 30
self.explorePostsTableView.dataSource = self
}
}
// MARK: - Table View DataSource
extension ListPageViewController : UITableViewDataSource {
func tableView ( _ tableView : UITableView, numberOfRowsInSection section : Int ) -> Int {
return 1
}
func tableView ( _ tableView : UITableView, cellForRowAt indexPath : IndexPath) -> UITableViewCell {
let cell = tableView. dequeueReusableCell ( withIdentifier : "ExplorePostTableViewCell" ) as! ExplorePostTableViewCell
return cell
}
}
The Cell is added as a separate file.
ExplorePostsTableViewCell.swift
Copy
import UIKit
import SnapKit
class ExplorePost : UITableViewCell {
// MARK: - Properties
@IBOutlet private weak var photoImageView2: UIImageView !
@IBOutlet private weak var rosieDelLabel: UILabel !
@IBOutlet private weak var likesLabel: UILabel !
@IBOutlet private weak var heartLikedImageView: UIImageView !
override init ( style : UITableViewCell.CellStyle, reuseIdentifier : String ? ) {
super. init ( style : style, reuseIdentifier : reuseIdentifier )
self. setupViews ()
}
required init? ( coder aDecoder : NSCoder) {
super. init ( coder : aDecoder )
}
func setupViews () {
rosieDelLabel. text = NSLocalizedString ( "rosie.del" , comment : "" )
rosieDelLabel.textColor = UIColor.porpoise
rosieDelLabel.numberOfLines = 0
rosieDelLabel.font = UIFont.textStyle2
rosieDelLabel.textAlignment = .left
likesLabel. text = NSLocalizedString ( ".likes2" , comment : "" )
likesLabel.textColor = UIColor.anchor2
likesLabel.numberOfLines = 0
likesLabel.font = UIFont.textStyle6
likesLabel.textAlignment = .right
}
}
RecyclerView-LinearLayoutManager
In Android lists are used with RecyclerView
andLinearLayout
. The repetitive cells are CardView
With LinearLayout
, you can view a group that aligns all children in a single direction. InLinearLayout
, no matter how wide they are, the vertical list has only one child per row, and your list will only be the one-row height(Height of the tallest child + padding).
CardView
wraps a layout and will often be the container used in a layout for each item within a RecyclerView
. Let's check the generated code.
Copy <!--activityListPage.xml-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/explorePicturesRecyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/layout_explore_post_card_view"
android:layout_marginStart="20dp"
android:layout_marginEnd="19dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/popularTextView"
app:layout_constraintBottom_toBottomOf="parent"/>
Copy <!--LayoutExplorePhotoCardView.xml-->
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/photoImageView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/photo"
android:scaleType="centerCrop"
android:layout_marginEnd="0dp"
android:layout_marginBottom="13dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/rosieDelTextView"/>
<TextView
android:id="@+id/rosieDelTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/rosie_del"
style="@style/textStyle2"
android:textAlignment="textStart"
android:textColor="?attr/porpoise"
android:layout_marginEnd="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/likesTextView"
app:layout_constraintTop_toBottomOf="@+id/photoImageView"
app:layout_constraintBottom_toBottomOf="parent"/>
<TextView
android:id="@+id/likesTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_likes"
style="@style/textStyle6"
android:textAlignment="textEnd"
android:textColor="?attr/anchor2"
android:layout_marginEnd="8dp"
android:layout_marginTop="13dp"
app:layout_constraintStart_toEndOf="@+id/rosieDelTextView"
app:layout_constraintEnd_toStartOf="@+id/heartLikedImageView"
app:layout_constraintTop_toBottomOf="@+id/photoImageView"
app:layout_constraintBottom_toBottomOf="parent"/>
<ImageView
android:id="@+id/heartLikedImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/heartliked"
android:layout_marginTop="14dp"
android:layout_marginBottom="1dp"
app:layout_constraintStart_toEndOf="@+id/likesTextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/photoImageView"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>