ArrayAdapter没有显示任何列表视图

问题描述:

我有一个简单的列表视图我想使用数组适配器填充。我只想在其中放入一个字符串。我对我有意义,但显然不工作,因为没有任何显示!我很确定我的错误在于:ArrayAdapter没有显示任何列表视图

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

我是否正确填充每一行?

+0

请张贴适配器的所有代码。 – Emmanuel 2014-12-07 00:55:33

+0

只是贴了其余的适配器,虽然没有太多的它 – 9er 2014-12-07 00:58:15

+0

党是永远不会空。大声笑..先生? – Elltz 2014-12-07 01:02:51

而是在适配器使用自己的列表的变量,你应该使用内置的名单像这样

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

同时膨胀,你应该尽量避免传递null,并使用像这样的'view = viewInflator.inflate(R.layout.parties_item,parent,false)''。 – Panther 2014-12-07 08:55:51

你的问题出现是因为你延伸的方式ArrayAdapterArrayAdapter有这样的构造函数,你想要做什么:

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

只要记住,ArrayAdapter需要你对你所提供的布局TextView或使用该构造,可以让你指定的其他版本和ID的TextView在布局内。

您无需为您的用例扩展ArrayAdapter

原来我需要在ArrayAdapter

@Override 
public int getCount(){ 
    return parties.size(); 
} 
+0

如果在扩展'ArrayAdapter'时实现'BaseAdapter',这是真的,因为它已经知道List的大小;它正在传递给构造函数。 – Emmanuel 2014-12-07 01:15:14

实现getCount()方法而不是

new PartiesAdapter(...) 

呼叫

new ArrayAdapter(context, R.layout.parties_item, R.id.party_item, parties) 

也删除PartiesAdapter,因为它试图做一些事情ArrayAdapter可以开箱即用。