Android ArrayAdapter不显示listview的任何内容

Android ArrayAdapter不显示listview的任何内容,android,Android,我有一个简单的列表视图,我想使用阵列适配器填充它。我只想在里面插一根线。我所拥有的对我来说是有意义的,但显然不起作用,因为没有显示任何内容!我确信我的错误就在这里: public class PartiesAdapter extends ArrayAdapter<String> { private List<String> parties; public PartiesAdapter(Context context, int resource, List<Str

我有一个简单的列表视图,我想使用阵列适配器填充它。我只想在里面插一根线。我所拥有的对我来说是有意义的,但显然不起作用,因为没有显示任何内容!我确信我的错误就在这里:

public class PartiesAdapter extends ArrayAdapter<String> {

private List<String> parties;

public PartiesAdapter(Context context, int resource, List<String> list) {
    super(context, resource);
    this.parties = list;
}

@Override
public View getView(int position, View view, ViewGroup parent) {
    if (view == null) {
        LayoutInflater viewInflator = LayoutInflater.from(getContext());
        view = viewInflator.inflate(R.layout.parties_item, null);
    }
    String party = parties.get(position);

    TextView party_name = (TextView) view.findViewById(R.id.party_item);
    party_name.setText(party);

    return view;
}
}
公共类PartieAdapter扩展了ArrayAdapter{
私人名单缔约方;
公共部分适配器(上下文、int资源、列表){
超级(上下文、资源);
本文件=清单;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
如果(视图==null){
LayoutInflater viewInflator=LayoutInflater.from(getContext());
视图=视图充气器。充气(R.layout.u项,空);
}
String party=parties.get(位置);
TextView party_name=(TextView)view.findViewById(R.id.party_项);
乙方名称:setText(甲方);
返回视图;
}
}

我是否正确填充了每一行?

您的问题是由于扩展
阵列适配器的方式造成的
ArrayAdapter
具有此构造函数,可执行您所需的操作:

ArrayAdapter(android.content.Context,int,java.util.List)

请记住,
ArrayAdapter
要求您在提供的布局上拥有一个
TextView
,或者使用此构造函数的其他版本,该构造函数允许您在布局中指定
TextView
的名称和id


您不需要为您的用例扩展
ArrayAdapter

结果表明,我需要在
ArrayAdapter
中实现一个
getCount()
方法

@Override
public int getCount(){
    return parties.size();
}
而不是

new PartiesAdapter(...)
召唤


同时删除
PartiesAdapter
,因为它正在尝试执行
ArrayAdapter
开箱即用的操作。

您应该像这样使用内置列表,而不是在适配器中使用您自己的列表变量

public class PartiesAdapter extends ArrayAdapter<String> {

    public PartiesAdapter(Context context, int resource, List<String> list) {
        super(context, resource,list);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null) {
            LayoutInflater viewInflator = LayoutInflater.from(getContext());
            view = viewInflator.inflate(R.layout.parties_item, parent,false);
        }
        String party = getItem(position);

        TextView party_name = (TextView) view.findViewById(R.id.party_item);
        party_name.setText(party);

        return view;
    }
}    
公共类PartieAdapter扩展了ArrayAdapter{
公共部分适配器(上下文、int资源、列表){
超级(上下文、资源、列表);
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
如果(视图==null){
LayoutInflater viewInflator=LayoutInflater.from(getContext());
视图=视图充气器。充气(R.layout.u项,父项,false);
}
字符串方=getItem(位置);
TextView party_name=(TextView)view.findViewById(R.id.party_项);
乙方名称:setText(甲方);
返回视图;
}
}    

请发布适配器的所有代码。尽管没有更多内容,但只发布了适配器的其余部分。Party从不为null。。英雄联盟先生?问题是我没有实现getCount()方法。它必须默认为0。谢谢你。我将此作为其他人的答案发布。您不需要在
ArrayAdapter
上实现
getCount()
。我打赌,如果你调用
super.getCount()
它也会起同样的作用。已经为你做了。如果您查看,您可以看到这一点。如果在扩展
ArrayAdapter
时未实现
BaseAdapter
,则这一点是正确的,因为它已经知道
列表的大小;正在将其传递给构造函数。此外,在进行充气时,应尽量避免传递null,并使用类似以下内容的方法进行充气(R.layout.parties\u item,parent,false)
public class PartiesAdapter extends ArrayAdapter<String> {

    public PartiesAdapter(Context context, int resource, List<String> list) {
        super(context, resource,list);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if (view == null) {
            LayoutInflater viewInflator = LayoutInflater.from(getContext());
            view = viewInflator.inflate(R.layout.parties_item, parent,false);
        }
        String party = getItem(position);

        TextView party_name = (TextView) view.findViewById(R.id.party_item);
        party_name.setText(party);

        return view;
    }
}