Java ListView元素不显示
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
@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 />
/>