“ArrayAdapter需要资源ID为TextView”

时间:2014-07-03 11:11:58

标签: android layout textview android-arrayadapter

我基本上知道这个异常的来源以及导致它的原因。这是因为我的textview包含在RelativeLayout中。

但是你能告诉我为什么会这样吗

playerAdapter = new PlayerAdapter(this,R.layout.item_lv_player,playerList);
lvPlayer.setAdapter(playerAdapter);

虽然这不是

PlayerAdapter playerAdapter1 = new PlayerAdapter(this,R.layout.item_lv_player,playerAdapterSource[0]);
spinnerPlayer1.setAdapter(playerAdapter1);

这两者都不应该抛出异常吗? PlayerAdapater是一个扩展ArrayAdapter的类。

是不是因为在第一个例子中我使用的是ListView,而在第二个例子中它是一个Spinner?这对我来说听起来不合乎逻辑,因为问题在于适配器的创建。

2 个答案:

答案 0 :(得分:0)

异常不取决于你的适配器,它取决于小部件。每个小部件都有一些属性,基于它只会引发异常,

Listview总是依赖于Textview的所有位置,但是spinner不依赖于它。如果你在没有R.id.TextView的情况下运行ListView,它会引发一个nullpointer异常,因为你没有在适配器中初始化textview。但是spinner不是因为它不取决于textview。

答案 1 :(得分:0)

你有ArrayAdapter,传递了3个参数。

3参数ArrayAdapter构造函数可以采用以下任何参数 -

1) ArrayAdapter(Context context, int resource, int textViewResourceId)

2) ArrayAdapter(Context context, int resource, T[] objects)

第一个解释 -

  •   

    public ArrayAdapter (上下文上下文,int资源,int   textViewResourceId)

         

    在API级别1构造函数

    中添加      

    <强>参数

         

    context 当前上下文。

         

    resource 包含布局的布局文件的资源ID   在实例化视图时使用。

         

    textViewResourceId 布局中TextView的ID   要填充的资源

第二个解释 -

  •   

    public ArrayAdapter (上下文上下文,int资源,T []对象)

         

    在API级别1构造函数

    中添加      

    参数

         

    context 当前上下文。

         

    resource 包含在实例化视图时使用的TextView的布局文件的资源ID。

         

    objects 要在ListView中表示的对象。

解释了 -

PlayerAdapter playerAdapter1 = new PlayerAdapter(this,
R.layout.item_lv_player,playerAdapterSource[0]);
spinnerPlayer1.setAdapter(playerAdapter1);
  1. 最后一个参数是textViewResourceId吗? &GT; NO

  2. 最后一个参数是ListView吗? &GT; NO

  3. 来自开发人员文档android ArrayAdapter