2011-07-01 7 views
0

データベースからロードされたカスタム行を使用してListViewに問題があります。コンポーネントがリストビューの上にあるときにリストビューにカスタム行を設定できません

リスト画面の場合、リストビューの上にボタンを配置すると、リストビューに表示される行は表示されません。

ただし、ボタンを削除するとすべて正常に機能します。ボタン(または他のコンポーネント)を上に表示して、より使いやすいようにします。以下の2つのコードサンプルが添付されています。

この作品のListView活動のXMLファイルです:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/real_red_dark"> 
    <LinearLayout 
    android:id="@+id/llMain" 
    android:layout_height="fill_parent" 
    android:background="@drawable/real_background" 
    android:layout_width="fill_parent" 
    android:layout_gravity="center" 
    android:gravity="center"> 
     <ListView 
      android:id="@+android:id/list"  
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_below="@+id/llButton" 
      android:layout_alignParentLeft="true" />   
     <TextView 
      android:id="@+android:id/empty" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:text="@string/no_sessions" 
      android:textStyle="bold" 
      android:textSize="18dp" 
      android:gravity="center"/> 
    </LinearLayout> 
</LinearLayout> 

私はそれの上に追加ボタンを持っている場合は、それが全く表示されません。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/real_red_dark"> 
    <LinearLayout 
    android:id="@+id/llMain" 
    android:layout_height="fill_parent" 
    android:background="@drawable/real_background" 
    android:layout_width="fill_parent" 
    android:layout_gravity="center" 
    android:gravity="center"> 
       <Button 
     android:id="@+id/btnSearch" 
     android:layout_width="fill_parent" 
     android:layout_height="35dip" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginTop="3dip" 
     android:layout_marginLeft="15dip" 
     android:layout_marginRight="15dip" 
     android:text="Find Sessions" 
     android:textStyle="bold" /> 
     <ListView 
      android:id="@+android:id/list"  
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_below="@+id/llButton" 
      android:layout_alignParentLeft="true" />   
     <TextView 
      android:id="@+android:id/empty" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:text="@string/no_sessions" 
      android:textStyle="bold" 
      android:textSize="18dp" 
      android:gravity="center"/> 
    </LinearLayout> 
</LinearLayout> 

答えて

0

ボタンをxmlレイアウトではなく、リストビュー自体にヘッダービューとしてプログラムで追加することができます。しかし、私はそれが上記の中だけのタイプミスだと仮定しています右を見ていない

使用listView.addHeaderView(ビュー)

http://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View

+0

それは私のために働いていましたが、データベースからアイテムが追加されていない(またはダウンロードされていない)場合、ヘッダーには何も表示されません。何か案は? – John

+0

@ John:おそらく 'setEmptyView(...) 'を使ってデータが利用できないことを示すことができます。ヘッダーが表示されないという問題を解決する可能性があります。 http://developer.android.com/reference/android/widget/AdapterView.html#setEmptyView(android.view.View) – Squonk

0

をそれが優れていますLinearLayoutよりもRelativeLayoutを使用している場合は、Android:layout_height値をListViewおよびTextView(空の行を示すために使用することがあります)の "wrap_content"として使用することもお勧めします。

0

何か...

android:id="@+android:id/list" 

... @android:の間に+があってはなりません。 @+を使用すると、自分の新しいリソースID、つまり@+id:を追加できます。あなたはまた、

android:id="@+android:id/empty" 

もう一つが、それはあなたが指定しているある関連性のないことを確認...

android:layout_below="@+id/llButton" 

... TextViewのために同じことをやっている...私はそれを疑いますandroid:layout_belowのような問題は、LinearLayout(RelativeLayoutの場合)では無効ですが、レイアウトにidがllButtonのボタンがありません。存在する場合は、既存のIDを指定する必要があるため、+も間違っています。

上記を修正することで問題は解決するかどうかはわかりませんが、これらの問題のためレイアウトインフレが「間違っている」ことが考えられます。

+0

これは私の間違いでした。それは私がレイアウトに苦しんでいた時からの残余物でした。キャッチをありがとう! – John

関連する問題