Android:ListView告诉我它已填充但不显示项目

时间:2013-02-05 00:12:52

标签: java android listview visibility android-arrayadapter

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

我有一个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的{​​{1}}:

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[],因为我在SO上发现并试了一下。

当我将XML中的.notifyDataSetChanged()对象中的android:layout_height更改为ListView时,我只会看到包含它的wrap_content中的不透明背景。当我将LinearLayout ListView设置为android:layout_height时,整个屏幕都是match_parent(magentish)。

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

1 个答案:

答案 0 :(得分:3)

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