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;
}
}