Skip to main content

android kotlin - ListView example


Kotlin ListView



The ListView is a list widget of android native SDK. The ListView widget displays a vertically scrollable collection of views. Each view represents a list item. And each view is positioned immediately below the previous view. The listVIew is used to display a simple list of items.




The following android tutorial will demonstrate to us how we can use a ListView widget in an android application using the Kotlin programming language. Here we will display a simple list of items inside the ListView widget and also implement the item click handler.




Android developers can easily add a ListView widget using the ListView tag to an XML layout file. The ListView tag has several useful attributes to tweak a ListView configuration such as divider, dividrHeight, entries, etc.




The ListView ‘entries’ attribute reference an array resource that will populate the ListView with items. The ‘divider’ attribute value may be a drawable or color to draw between list items. The ‘dividerHeight’ attribute defines the divider height of ListView.




In this android tutorial, we populated a ListView with items using kotlin code. To do that, at first we create a simple list of string values where each item holds a color name. Next, we build an ArrayAdapter instance with this newly created list. Now we bind this ArrayAdapter with ListView. This ArrayAdapter populates the ListView with items that came from the list of string values.




At last, we set a click listener for the ListView items so that when a user clicks an item from the ListView then we can determine the clicked item.




The AdapterView.onItemClickListener interface callback is invoked when an item in this AdapterView has been clicked. So, using this interface we can get the ListView clicked item’s position and text. Finally, we can display the users clicked item position and text to the app interface.




This android kotlin tutorial code is written in an android studio IDE. Copy the code into your android studio IDE and run it on an emulator to test how we populate a ListView widget with items in an android application. And how we implemented the ListView item click listener. We displayed screenshots of the emulator screen, which also help you to understand the code without running it on an android device or emulator.




MainActivity.kt



package com.cfsuman.kotlintutorials

import android.os.Bundle
import android.widget.*
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// Get the widgets reference from XML layout
val textView = findViewById<TextView>(R.id.textView)
val listView = findViewById<ListView>(R.id.listView)

// Initializing a list of string
val colors = listOf(
"Red", "Green", "Blue",
"Yellow", "Black", "Crimson",
"Orange"
)

// Create an ArrayAdapter from List
val adapter = ArrayAdapter<String>(
this, // Context
android.R.layout.simple_list_item_1, // Layout
colors // List
)

// Finally, data bind the list view object with adapter
listView.adapter = adapter;

// Set an item click listener for ListView
listView.onItemClickListener = AdapterView
.OnItemClickListener { parent, view, position, id ->
// Get the selected item text from ListView
val selectedItem = parent.getItemAtPosition(position) as String

// Display the selected item text on TextView
textView.text = "Your favorite color is : $selectedItem"
}
}
}





activity_main.xml



<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="24dp"
android:background="#DCDCDD">

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select your favorite color"
android:textColor="#191970"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ListView
android:id="@+id/listView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />

</androidx.constraintlayout.widget.ConstraintLayout>






Popular posts from this blog

Restricting Jetpack Compose TextField to Numeric Input Only

Jetpack Compose has revolutionized Android development with its declarative approach, enabling developers to build modern, responsive UIs more efficiently. Among the many components provided by Compose, TextField is a critical building block for user input. However, ensuring that a TextField accepts only numeric input can pose challenges, especially when considering edge cases like empty fields, invalid characters, or localization nuances. In this blog post, we'll explore how to restrict a Jetpack Compose TextField to numeric input only, discussing both basic and advanced implementations. Why Restricting Input Matters Restricting user input to numeric values is a common requirement in apps dealing with forms, payment entries, age verifications, or any data where only numbers are valid. Properly validating input at the UI level enhances user experience, reduces backend validation overhead, and minimizes errors during data processing. Compose provides the flexibility to implement ...

jetpack compose - TextField remove underline

Compose TextField Remove Underline The TextField is the text input widget of android jetpack compose library. TextField is an equivalent widget of the android view system’s EditText widget. TextField is used to enter and modify text. The following jetpack compose tutorial will demonstrate to us how we can remove (actually hide) the underline from a TextField widget in an android application. We have to apply a simple trick to remove (hide) the underline from the TextField. The TextField constructor’s ‘colors’ argument allows us to set or change colors for TextField’s various components such as text color, cursor color, label color, error color, background color, focused and unfocused indicator color, etc. Jetpack developers can pass a TextFieldDefaults.textFieldColors() function with arguments value for the TextField ‘colors’ argument. There are many arguments for this ‘TextFieldDefaults.textFieldColors()’function such as textColor, disabledTextColor, backgroundColor, cursorC...

jetpack compose - Image clickable

Compose Image Clickable The Image widget allows android developers to display an image object to the app user interface using the jetpack compose library. Android app developers can show image objects to the Image widget from various sources such as painter resources, vector resources, bitmap, etc. Image is a very essential component of the jetpack compose library. Android app developers can change many properties of an Image widget by its modifiers such as size, shape, etc. We also can specify the Image object scaling algorithm, content description, etc. But how can we set a click event to an Image widget in a jetpack compose application? There is no built-in property/parameter/argument to set up an onClick event directly to the Image widget. This android application development tutorial will demonstrate to us how we can add a click event to the Image widget and make it clickable. Click event of a widget allow app users to execute a task such as showing a toast message by cli...