346 votes

Comment ajouter dynamiquement des éléments à une ListView sur Android ?

Quelqu'un peut-il expliquer ou suggérer un tutoriel pour créer de façon dynamique une ListView dans Android ?

Voici mes exigences :

  • Je devrais être en mesure d'ajouter dynamiquement de nouveaux éléments en appuyant sur un bouton.
  • devrait être suffisamment simple à comprendre (éventuellement sans amélioration des performances ou de l'efficacité). convertView par exemple)

Je sais qu'il y a beaucoup de questions sur ce sujet, mais je n'en ai trouvé aucune qui réponde à ma question.

4 votes

La réponse de Shardul qui a obtenu le plus grand nombre de votes est considérée comme étant de haute qualité et les utilisateurs ont exprimé le souhait qu'elle soit acceptée. Pouvez-vous envisager de l'accepter ?

0voto

Oz Shabat Points 912

La réponse courte : lorsque vous créez une ListView, vous lui passez une référence aux données. Maintenant, chaque fois que ces données seront modifiées, cela affectera la vue de la liste et donc ajoutera l'élément à celle-ci, après que vous ayez appelé adapter.notifyDataSetChanged() ;.

Si vous utilisez un RecyclerView, mettez à jour uniquement le dernier élément (si vous l'avez ajouté à la fin de la liste des objets) pour économiser de la mémoire avec : mAdapter.notifyItemInserted(mItems.size() - 1) ;

-1voto

sirajudheen tk Points 47
        This is the simple answer how to add datas dynamically in listview android kotlin

class MainActivity : AppCompatActivity(){

            var listItems = arrayListOf<String>()
            val array = arrayOf("a","b","c","d","e")
            var listView: ListView? = null

            private lateinit var adapter: listViewAdapter

            override fun onCreate(savedInstanceState: Bundle?) {
                super.onCreate(savedInstanceState)
                setContentView(R.layout.scrollview_layout)

                listItems.add("a")
                listItems.add("b")
                listItems.add("c")
                listItems.add("d")
                listItems.add("e")

                //if you want to add array items to a list you can try this for each loop
                for(items in array)
                    listItems.add(items)

                //check the result in console
                Log.e("TAG","listItems array: $listItems")

            adapter = ListViewAdapter()
            adapter.updateList(listItems)
            adapter.notifyDataSetChanged()

            }
        }

//Here is the adapter class
    class ListviewAdapter : BaseAdapter(){

    private var itemsList = arrayListOf<String>()

    override fun getView(position: Int, container: View?, parent: ViewGroup?): View {
            var view  = container
            val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
            if (view == null)
                view = inflater.inflate(R.layout.list_pc_summary, parent, false)

    return view
    }

    override fun getItem(position: Int): Any  = itemsList[position]

    override fun getItemId(position: Int): Long = position.toLong()

    override fun getCount(): Int = itemsList.size

    fun updateList(listItems: ArrayList<String>()){
        this.itemsList = listItems
        notifyDatSetChanged

    }

        }

    //Here I just explained two ways, we can do this many ways.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X