在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/