私はグーグルで、おそらくばかばかしい監督だと思う答えを見つけた。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
であるだけで不透明な背景を参照してください。 ListView
android:layout_height
をmatch_parent
に設定すると、画面全体が#206
(magentish)になります。
setAdapter()
の前にアダプタでgetCount()
をチェックすると、項目があると言います。後でそれを確認すると、ビュー自体から、同じ数のアイテムがあることが示されます。私はこの1つで完全に失われていますが、何も表示されていません。
私はちょうどチェックして、うまくいきます。私は、 'buildPlaylistView();'の呼び出しの後に 'playlistView'をいじって、コンテンツやアダプタを効果的にリセットしていると思われます。あなたが投稿したコードには含まれていません。 – andr
私がplaylistViewグローバルに行うのは、bringToFront()を呼び出すことだけで、何もしなかったことです。 id/playlist_screen(外部レイアウト)に接続されているビューでは、可視性を設定し、無効にして強制的に再描画し、いくつかのアニメーションを実行します。 – Kimo
まあ...私は知らない。可能であれば、プロジェクト全体をアップロードしてください。それなしではそれはちょうど推測です。私は 'playlist.titlesAsArray()'を嘲笑して静的データを返し、実際のデバイス上で実行し、罰金を科しました。うまくいけば、アダプタのすべてのアイテムが適切な色などで表示されたことを意味します。また、より多くのヒントを提供することもできます。どのAPIを使用していますか?エミュレータやデバイスでこれを実行していますか?すべてはここで重要です... – andr