我基本上知道这个异常的来源以及导致它的原因。这是因为我的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?这对我来说听起来不合乎逻辑,因为问题在于适配器的创建。
答案 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);
最后一个参数是textViewResourceId吗? &GT; NO
最后一个参数是ListView吗? &GT; NO
来自开发人员文档android ArrayAdapter。