Android ArrayAdapter getView()位置仅在0处
抱歉,如果这看起来很愚蠢,我只是无法理解我得到的这个运行时错误。以下是我的代码供参考:Android ArrayAdapter getView()位置仅在0处,android,listview,Android,Listview,抱歉,如果这看起来很愚蠢,我只是无法理解我得到的这个运行时错误。以下是我的代码供参考: 目前,我在MainListViewRecordAdapter的第27行得到一个NullPointerException。当我运行调试器时,int位置始终为0,这导致代码不会将某个项从ArrayList中渐变出来,从而导致NullPointerException。唯一的问题是,我不明白为什么会发生这种情况,为什么位置总是有值0?您还没有初始化Arraylist项并删除行位置=1;。按以下步骤进行: pack
目前,我在MainListViewRecordAdapter的第27行得到一个NullPointerException。当我运行调试器时,int位置始终为0,这导致代码不会将某个项从ArrayList中渐变出来,从而导致NullPointerException。唯一的问题是,我不明白为什么会发生这种情况,为什么位置总是有值0?您还没有初始化Arraylist项并删除行位置=1;。按以下步骤进行:
package com.chigstuff.fun;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class MainListViewRecordAdapter extends ArrayAdapter<MainListViewRecord> {
private ArrayList<MainListViewRecord> items;
public MainListViewRecordAdapter(Context context, int textViewResourceId, ArrayList<MainListViewRecord> items) {
super(context, textViewResourceId, items);
this.items=items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.main_list_view_record, null);
}
MainListViewRecord item = items.get(position);
if (item != null) {
TextView main_list_view_text = (TextView) v.findViewById(R.id.main_list_view_text);
if (main_list_view_text != null) {
main_list_view_text.setText("What text");
}
}
return v;
}
}
package com.chigstuff.fun;
导入java.util.ArrayList;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类MainListViewRecordAdapter扩展了ArrayAdapter{
私有ArrayList项;
public MainListViewRecordAdapter(上下文上下文、int textViewResourceId、ArrayList项){
super(上下文、textViewResourceId、项);
这个。项目=项目;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
LayoutInflater vi=(LayoutInflater)getContext().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
v=vi.充气(R.布局.主列表.视图.记录,空);
}
MainListViewRecord item=items.get(位置);
如果(项!=null){
TextView主视图列表视图文本=(TextView)v.findViewById(R.id.main列表视图文本);
if(主列表视图文本!=null){
main_list_view_text.setText(“什么文本”);
}
}
返回v;
}
}
不使用ArrayAdapter使用BaseAdapter,通过它,您不必在getView()中声明位置。它将在其参数中。对,因此指向MainListViewRecordAdapter.java的链接似乎用下面的答案更新,这对试图了解此处发生的情况的其他人没有好处=(实际上,如果您使用的是继承的ArrayAdapter的构造函数,那么只需使用getItem()即可获得该项)。根本不需要变量项。但您没有调用getItem,是吗?您正在从items arraylist获取项。我也有同样的问题,但我看不出解决方案是什么。我实际上发现了一些对我有效的方法: