2013-02-05 14 views
5

私はグーグルで、おそらくばかばかしい監督だと思う答えを見つけた。Android:ListViewは人口が多いがアイテムを表示していないことを教えてくれる。

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でそれを見つけて試してみたので、私はそこに.notifyDataSetChanged()の両方を持っています。

私はwrap_contentに私のXMLにListViewオブジェクトにandroid:layout_heightを変更すると、私はそれをラップLinearLayoutであるだけで不透明な背景を参照してください。 ListViewandroid:layout_heightmatch_parentに設定すると、画面全体が#206(magentish)になります。

setAdapter()の前にアダプタでgetCount()をチェックすると、項目があると言います。後でそれを確認すると、ビュー自体から、同じ数のアイテムがあることが示されます。私はこの1つで完全に失われていますが、何も表示されていません。

+0

私はちょうどチェックして、うまくいきます。私は、 'buildPlaylistView();'の呼び出しの後に 'playlistView'をいじって、コンテンツやアダプタを効果的にリセットしていると思われます。あなたが投稿したコードには含まれていません。 – andr

+0

私がplaylistViewグローバルに行うのは、bringToFront()を呼び出すことだけで、何もしなかったことです。 id/playlist_screen(外部レイアウト)に接続されているビューでは、可視性を設定し、無効にして強制的に再描画し、いくつかのアニメーションを実行します。 – Kimo

+0

まあ...私は知らない。可能であれば、プロジェクト全体をアップロードしてください。それなしではそれはちょうど推測です。私は 'playlist.titlesAsArray()'を嘲笑して静的データを返し、実際のデバイス上で実行し、罰金を科しました。うまくいけば、アダプタのすべてのアイテムが適切な色などで表示されたことを意味します。また、より多くのヒントを提供することもできます。どのAPIを使用していますか?エミュレータやデバイスでこれを実行していますか?すべてはここで重要です... – andr

答えて

2

android:orientation="horizontal"からandroid:orientation="vertical"に変更してみてください。

+0

動作しませんでしたが、ListViewは水平ではないですか?私のアプリの残りの部分は水平になっているので、それはそこに(ランドスケープ形式のビデオを再生します) – Kimo

+0

私たちは方向を設定できません。私は親ビューの方向について言及していました。私はオブジェクトがレンダリングされるのを疑っていますが、レイアウトのために隠されています。 –

+0

オリエンテーションを取り除きました(そして、他のものを試しました) – Kimo

関連する問題