In questo articolo vedremo come aggiungere a fianco degli elementi il CheckBox in modo che quando si clicca sull'elemento questo venga selezionato permettendo una sselezione multipla degli elementi. Questo può essere utile per sapere quali elementi sono attualmente selezionato prima di selezionarne un altro.
Ecco come si presenta il file activity_main.xml
Ecco le righe di codice da inserire per avere l'aspetto desiderato della ListView
Ecco come si presenta il file MainActivity.kt
Ecco un video dimostrativo
Ecco come si presenta il file activity_main.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<RelativeLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:id="@+id/rl" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
android:padding="10dp" | |
tools:context=".MainActivity"> | |
<ListView | |
android:id="@+id/list" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" /> | |
</RelativeLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//crea un ArrayAdapter da lista impostando anche uno stile "simple_list_item_multiple_choice" | |
arrayAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, fruits_list) | |
//.................. | |
//impostazione della modalità di scelta dell'elemento | |
//se non si inserisce questa riga, la selezione della CheckBox non viene eseguita | |
lv.choiceMode = ListView.CHOICE_MODE_MULTIPLE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dm.tutoriallistview11 | |
import androidx.appcompat.app.AppCompatActivity | |
import android.os.Bundle | |
import android.widget.ArrayAdapter //importazione della Classe: ArrayAdapter | |
import android.widget.ListView //importazione della classe: ListView | |
import android.widget.Toast | |
import java.util.* | |
//inizializzazione di un nuovo array di stringhe | |
private var fruits = arrayOf("") | |
//crea un elenco dagli elementi dell'Array di stringhe | |
private var fruits_list: MutableList<String> = ArrayList(Arrays.asList(*fruits)) | |
//crea un ArrayAdapter di tipo String | |
private var arrayAdapter: ArrayAdapter<String>? = null | |
//dichiarazione delle variabili associate agli oggetti | |
private lateinit var lv: ListView | |
class MainActivity : AppCompatActivity() { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
//ottieni i riferimenti agli oggetti del layout | |
lv = findViewById(R.id.list) | |
//crea un ArrayAdapter da lista impostando anche uno stile "simple_list_item_multiple_choice" | |
arrayAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, fruits_list) | |
//associazione della lista all'ArrayAdapter | |
lv.adapter = arrayAdapter | |
//impostazione della modalità di scelta dell'elemento | |
//se non si inserisce questa riga, la selezione del RadioButton non viene eseguita | |
lv.choiceMode = ListView.CHOICE_MODE_MULTIPLE | |
//rimuove la riga vuota | |
fruits_list.remove("") | |
} | |
override fun onResume() { | |
super.onResume() | |
//recupero della risorsa Array "lista" dal file strings.xml | |
val titles: Array<String> = resources.getStringArray(R.array.lista) | |
//aggiunta di elementi alla lista | |
for (i in titles.indices) { | |
fruits_list.add(titles[i]) | |
} | |
//permette di ordinare gli elementi all'interno della lista in ordine alfabetico italiano | |
fruits_list.sort() | |
fruits_list.forEach { print("$it ") } | |
/*notifyDataSetChanged () | |
Notifica che i dati sono stati modificati | |
e qualsiasi vista che riflette | |
il set di dati dovrebbe aggiornarsi.*/ | |
arrayAdapter!!.notifyDataSetChanged() | |
//gestione del click sugli elementi della ListView | |
lv.setOnItemClickListener{parent, view, position, id-> | |
//position è la variabile che contiene la posizione dell'elemento cliccato | |
//position = 0 è il primo elemento della lista | |
//variabile che contiene la posizione dell'elemento cliccato | |
val posizione = position | |
//variabile che cotiene il testo dell'elemento cliccato | |
val elemento = lv.getItemAtPosition(position) | |
Toast.makeText(this, "Posizione: $posizione\nValore elemento: $elemento", Toast.LENGTH_LONG).show() | |
} | |
} | |
} |
Ecco un video dimostrativo
Download Project | ![]() |
Download file APK | ![]() |
Commenti
Posta un commento