Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ArrayAdapter getView()位置仅在0处_Android_Listview - Fatal编程技术网

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获取项。我也有同样的问题,但我看不出解决方案是什么。我实际上发现了一些对我有效的方法: