我的自定义数组适配器中的 getView 方法不起作用

My getView method in my custom array adapter is not working

你能给我一些关于我的 getView 方法的建议吗?
我有扩展 ArrayAdapter(context, id, list)

的自定义适配器
public class myCustomAdapter extends ArrayAdapter{


private List obj = null;
public myCustomAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List objects) {
    super(context, resource, objects);
    obj = objects;

}

@Override
public int getCount() {
    return obj.size();
}

@Nullable
@Override
public Object getItem(int position) {
    return super.getItem(position);
}



@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    Task myTask = (Task) getItem(position);
    if(convertView==null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent);
    }
    TextView myTextView = (TextView) convertView.findViewById(R.id.textView);
    myTextView.setText(myTask.getTaskText());
    CheckBox myCheckBox = (CheckBox) convertView.findViewById(R.id.checkBox);
    myCheckBox.setChecked(myTask.getChecked());

    return convertView;
}

}

问题 1:超级:未经检查的对 ArrayAdapter(..) 作为原始类型成员的调用
问题 3:getTaskText //methood from my Task class// 可能会产生 NPE

如果可能,我将不胜感激。

改变这个

return super.getView(position, convertView, parent)

return convertView;

 if(convertView!=null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent);
}

应该是

if(convertView==null){
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent);
    }

当 convertview 为 null 时,你必须膨胀。不是当它不为空时。然后 return 这个来自你的 getView() 方法

我也看不到 getCount() 方法。告诉适配器要充气多少个项目也很重要

当 convertview 为 null 时,您必须对其进行扩充。

if(convertView==null){ convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent); }

还有return convertview 而不是 super

我建议使用BaseAdapter,很基础,ArrayAdapter是BaseAdapter的子类,大多数情况下不需要继承BaseAdapter,直接使用

ArrayAdapter adapter = new ArrayAdapter(context, R.layout.list_item, R.id.text, stringList);

public class MyCustomAdapter extends BaseAdapter {

    private List<Task> listData;

    public MyCustomAdapter(List<Task> list) {
        listData = list;
    }

    @Override
    public int getCount() {
        return listData.size();
    }

    @Override
    public Object getItem(int position) {
        return listData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        }
        Task data = getItem(position);
        TextView text = (TextView) convertView.findViewById(R.id.text);
        return convertView;
    }
}