在Android的ArrayAdapter创build简单的ListView
我试图在Android中创build一个Activity
,这个Activity只包含一个ListView
。
正如我所知要填充列表视图,我们需要使用ArrayAdapter
。
所以要了解ArrayAdapter我已阅读以下链接:
http://developer.android.com/reference/android/widget/ArrayAdapter.html
但是我仍然无法清楚地理解它!
最大的疑问之一是为什么构造函数需要一个TextView
资源ID,而我的活动没有任何TextViews,我应该给它?
我不是说这是唯一的构造函数,但是我想解释的是我无法理解它。
为了创build一个简单的listview,我还提到了下面的链接:
简单的ListView使用ArrayAdapter的例子。
但我的主要疑虑是为什么它需要一个TextView资源ID?
如果有人可以用例子来解释,这将是非常有帮助的。
编辑:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
ArrayAdapter使用TextView来显示其中的每个项目。 在幕后,它使用它保存的每个对象的toString()
方法,并在TextView中显示它。 ArrayAdapter有一些可以使用的构造函数,你在例子中使用的是:
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
默认情况下,ArrayAdapter使用默认的TextView来显示每个项目。 但是,如果你想,你可以创build自己的TextView,并通过扩展TextView类来实现任何你想要的复杂devise。 这将不得不进入布局供您使用。 您可以在textViewResourceId字段中引用此对象,以将对象绑定到此视图而不是默认值。
为了您的使用,我build议您使用构造函数:
ArrayAdapter(Context context, int resource, T[] objects).
在你的情况下,这将是:
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values)
应该没问题。 这将绑定每个string到默认的TextView显示 – 简单和简单的白色背景。
所以要回答你的问题,你不必使用textViewResourceId。
但主要怀疑为什么TextView资源ID它需要?
看看构造函数和参数。
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
在API级别1构造函数中添加
参数
context
当前上下文。
resource
包含实例化视图时使用的布局的布局文件的资源ID。
textViewResourceId
布局资源中要被填充的对象的TextView的id在ListView
表示的对象。
android.R.id.text1
引用android资源中的文本的id。 所以你不需要在你的活动中有一个。
这是完整的列表
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
是指活动的上下文
android.R.layout.simple_list_item_1
simple_list_item_1是android.R.layout.simple_list_item_1
中的布局。
android.R.id.text1
引用android资源ID。
values
是您提供的链接中的string数组
http://developer.android.com/reference/android/R.layout.html
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
我也是新来的Android,所以我可能是错的。 但根据我的理解,而使用此列表视图创build第二个参数是列表项的布局。 布局由许多视图(图像视图,文本视图等)组成。 用第三个参数指定要在哪个视图或文本视图中显示文本。
public ArrayAdapter (Context context, int resource, int textViewResourceId, T[] objects)
在这里,资源意味着在实例化视图时使用的布局的“id”。
现在,这个布局有许多子视图和他们自己的ID。 所以, textViewResourceId
告诉我们需要填充数据的子视图。
你不需要使用id为textview。 你可以从android arrayadapter学到更多。 下面的代码初始化arrayadapter。
ArrayAdapter arrayAdapter = new ArrayAdapter(this, R.layout.single_item, eatables);
它需要的TextView资源ID是一个TextView布局文件,所以它不会在同一个活动中。
您可以通过转到文件>新build> XML> XML布局文件创build它,然后在根标记字段中input“TextView”的窗口小部件types。
资料来源: https : //www.kompulsa.com/the-simplest-way-to-implement-an-android-listview/