Java ListView元素不显示

Java ListView元素不显示,java,android,listview,android-adapter,Java,Android,Listview,Android Adapter,ListView元素不显示,即使我以前使用过几乎相同的代码。很抱歉,我不得不问这样的问题,但我真的不明白为什么它不起作用。我看的其他类似问题都没有用 项目和列表视图的高度应该合适。不知道发生了什么事。谢谢各位 下面是代码转储: 主要活动: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout

ListView元素不显示,即使我以前使用过几乎相同的代码。很抱歉,我不得不问这样的问题,但我真的不明白为什么它不起作用。我看的其他类似问题都没有用

项目和列表视图的高度应该合适。不知道发生了什么事。谢谢各位

下面是代码转储:

主要活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_select_city);
    findViewById(R.id.loadingPanel).setVisibility(View.GONE); // remove loading animation

    ArrayList<String> citiesList = new ArrayList<>();
    citiesList.add("Waterloo");
    citiesList.add("Guelph");
    populateCities(citiesList);
}

public void populateCities(ArrayList<String> citiesList) {

    // see what the list is
    Toast.makeText(getApplicationContext(),citiesList.toString(),Toast.LENGTH_LONG).show();

    // populate the ListView
    CitiesListAdapter citiesListAdapter = new CitiesListAdapter(this, citiesList);
    ListView citiesListView = (ListView)findViewById(R.id.cities_list);
    citiesListView.setAdapter(citiesListAdapter);

    // listen for when a city in the list is clicked
    citiesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // go to the bar list activity (send the city and province with it)
            TextView lblCity = (TextView)view.findViewById(R.id.lblCity);
            String city = lblCity.getText().toString();
            Toast.makeText(getApplicationContext(), city, Toast.LENGTH_LONG).show();
        }
    });
}
下面是主要布局:


然后是ListView项布局(
cityitem.xml
):


编辑:看起来我也遇到了这个愚蠢的错误,安卓似乎无法修复(只是偷偷地进入日志):

不确定这是不是什么都没有显示的原因


屏幕截图:

构造函数中的
super
调用不包括
ArrayList
,也没有覆盖
getCount()
以返回列表大小,因此您的
适配器将返回
0
项计数,
ListView
不会尝试检索任何
视图。您可以在
super
调用中包含
ArrayList
,或者覆盖
getCount()
方法以返回
cities.size()

但是,对于
String
s的简单
ArrayList
,不一定需要自定义
适配器。您可以简单地使用
ArrayAdapter
的构造函数,该构造函数接受布局和
TextView
资源ID

ArrayAdapter<String> citiesListAdapter = new ArrayAdapter<>(this,
                                                            R.layout.cityitem,
                                                            R.id.lblCity,
                                                            cities);
ArrayAdapter citiesListAdapter=新的ArrayAdapter(此,
R.layout.cityitem,
R.id.lblCity,
城市);

列表视图中没有布局。您需要在ListView中添加布局(线性或相对)。像这样

<ListView 
<RelativeLayout />
/>


在布局中,您可以声明要显示的内容—TextView或ImageView等。

是否可以附加screenshot@PhanVănLinh编辑。
ArrayAdapter<String> citiesListAdapter = new ArrayAdapter<>(this,
                                                            R.layout.cityitem,
                                                            R.id.lblCity,
                                                            cities);
<ListView 
<RelativeLayout />
/>