5

所以我用谷歌搜索,并搜索了一个我认为可能是荒谬疏忽的答案,但这里有。

我有一个ListView我正在填充的一个ArrayAdapter我正在构建的对象列表,我在我的应用程序的其他地方使用它。我已经通过getCount在我调用之前和之后检查适配器中有项目.setAdapter()。但是,我的应用程序中没有显示任何内容。

我的主要布局res/layout/playlistview

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playlist_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#80000000"
android:gravity="center"
android:orientation="horizontal" >

<ListView
    android:id="@+id/playlistview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#206"
    android:background="#602" >

</ListView>

</LinearLayout>

(我设置了颜色,所以我可以更容易地看到发生了什么)

对于textview每个项目res/layout/singlelistitem

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/single_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="16sp"
    android:padding="5dp" 
    android:background="#206">
</TextView>

以及我用来填充它的代码:

private ListView playlistView;

private void buildPlaylistView() {
playlistView = (ListView)findViewById(R.id.playlistview);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.singlelistitem, R.id.single_item, playlist.titlesAsArray());

playlistView.setAdapter(adapter);

playlistView.setVisibility(View.VISIBLE);

adapter.notifyDataSetChanged();
((ArrayAdapter<String>)playlistView.getAdapter()).notifyDataSetChanged();
}

playlist.titlesAsArray()确实返回String[]并且有效。

我两个都.notifyDataSetChanged()在那里,因为我在 SO 上找到了它并试了一下。

当我将XMLandroid:layout_height中的对象中的 更改为 时,我只看到包装它的不透明背景。当我将 设置为时,整个屏幕都是(magentish)。ListViewwrap_contentLinearLayoutListView android:layout_heightmatch_parent#206

当我getCount()在适配器setAdapter()说有物品之前检查它时。当我之后检查它时,从视图本身来看,它说有相同数量的项目。我完全迷失了这个,但没有显示任何内容。

4

1 回答 1

4

尝试从更改android:orientation="horizontal"android:orientation="vertical"这可能会解决。

于 2013-02-05T00:40:31.703 回答