347 Stimmen

Wie fügen Sie dynamisch Elemente zu einer ListView auf Android?

Kann jemand erklären oder eine Anleitung vorschlagen, wie man dynamisch eine ListView in Android?

Hier sind meine Anforderungen:

  • Ich sollte in der Lage sein, neue Elemente dynamisch durch Drücken einer Taste hinzuzufügen.
  • sollte einfach genug zu verstehen sein (möglicherweise ohne Leistungsverbesserungen oder convertView zum Beispiel)

Ich weiß, dass es eine ganze Reihe von Fragen zu diesem Thema gibt, aber ich konnte keine finden, die meine Frage beantwortet.

0voto

Oz Shabat Punkte 1158

Die kurze Antwort: Wenn Sie eine ListView erstellen, übergeben Sie ihr einen Verweis auf die Daten. Nun, wann immer diese Daten geändert werden, wird es die Listenansicht beeinflussen und somit das Element zu ihr hinzufügen, nachdem Sie adapter.notifyDataSetChanged(); aufrufen.

Wenn Sie eine RecyclerView verwenden, aktualisieren Sie nur das letzte Element (wenn Sie es am Ende der Liste der Objekte hinzugefügt haben), um Speicherplatz zu sparen: mAdapter.notifyItemInserted(mItems.size() - 1);

-1voto

Siru malayil Punkte 127
        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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X