ArrayAdapter in android to create simple listview
Solution 1:
ArrayAdapter uses a TextView to display each item within it. Behind the scenes, it uses the toString()
method of each object that it holds and displays this within the TextView. ArrayAdapter has a number of constructors that can be used and the one that you have used in your example is:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
By default, ArrayAdapter uses the default TextView to display each item. But if you want, you could create your own TextView and implement any complex design you'd like by extending the TextView class. This would then have to go into the layout for your use. You could reference this in the textViewResourceId field to bind the objects to this view instead of the default.
For your use, I would suggest that you use the constructor:
ArrayAdapter(Context context, int resource, T[] objects).
In your case, this would be:
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)
and it should be fine. This will bind each string to the default TextView display - plain and simple white background.
So to answer your question, you do not have to use the textViewResourceId.
Solution 2:
But again main doubt why TextView resource id it needs?
Look at the constructor and the params.
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Added in API level 1 Constructor
Parameters
context
The current context.
resource
The resource ID for a layout file containing a layout to use when instantiating views.
textViewResourceId
The id of the TextView within the layout resource to be populated objects The objects to represent in theListView
.
android.R.id.text1
refers to the id of text in android resource. So you need not have the one in your activity.
Here's the full list
http://developer.android.com/reference/android/R.id.html
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, values);
this
refers to activity context
android.R.layout.simple_list_item_1
simple_list_item_1 is the layout in android.R.layout.
android.R.id.text1
refers to the android resource id.
values
is a string array from the link you provided
http://developer.android.com/reference/android/R.layout.html
Solution 3:
The TextView resource id it needs is for a TextView layout file, so it won't be in the same activity.
You can create it by going to File > New > XML > XML Layout File, and enter the widget type, which is 'TextView' in the root tag field.
Source: https://www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/
Solution 4:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
Here, resource means the 'id' of the Layout you are using while instantiating the view.
Now, this layout has many child views with their own ids. So, textViewResourceId
tells which child view we need to populate with the data.
Solution 5:
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
I am also new to Android , so i might be wrong. But as per my understanding while using this for listview creation 2nd argument is the layout of list items. A layout consists of many views (image view,text view etc). With 3rd argument you are specifying in which view or textview you want the text to be displayed.