KamalSalem
KamalSalem

Reputation: 495

how do I add items to listview dynamically in android

Can anybody help me? I'm trying to create a ListView in Android, and I'm trying to load items into it using code (not using XML)

Here's the code that I have so far

tweetList = (ListView)this.findViewById(R.id.tweetListView);
        TextView tv;
        for(int i=0;i<20;i++)
        {
            tv = new TextView(this);
            tv.setText("I'm a textView");
            tweetList.addHeaderView(tv);

        }

        tweetList.invalidate();

What am I doing wrong? The items are not showing in runtime

EDIT: I changed the code as per the answers below and here's the code I have now

 tweetList = (ListView)this.findViewById(R.id.tweetListView);
        ArrayAdapter<TextView> aa = new ArrayAdapter<TextView>(this, R.id.tweetListView);
        tweetList.setAdapter(aa);
        TextView tv;
        for(int i=0;i<20;i++)
        {
            tv = new TextView(this);
            tv.setText("I'm a textView");
            //tweetList.addHeaderView(tv);

            aa.add(tv);

        }

        tweetList.invalidate();

I'm getting an exception now

11-10 01:32:16.002: ERROR/AndroidRuntime(867): android.content.res.Resources$NotFoundException: Resource ID #0x7f050030 type #0x12 is not valid

Why am I not able to add them dynamically now?

Upvotes: 3

Views: 11549

Answers (2)

Eng.Fouad
Eng.Fouad

Reputation: 117579

You need to use ArrayAdapter and add it to the ListView. Then just add elements to the ArrayAdapter dynamically.

For example:

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1);
tweetList.setAdapter(arrayAdapter);
// ...
arrayAdapter.add("New Item");

Upvotes: 7

K-ballo
K-ballo

Reputation: 81349

The header view is just a header, its not the items in the list. Your listview receives its contents through an Adapter. The ListView does not keep Views for its children, but its the adaptor who creates them and fills them with the appropiate data when they need to be shown at the screen. Search for basic tutorials on how to do this, there are lots out there; and remember adapters are the key.

Upvotes: 0

Related Questions