讓我自己陷入一個泡菜試圖擠壓在同一活動中的兩個ListViews。它的工作原理是使用包含在標準(垂直)LinearLayout中的兩個單獨的ListFragments。與兩個ListViews滾動,試圖填充LinearLayout而不是
問題是,兩個列表一起比屏幕長,第二個列表因此部分隱藏。在視覺上,用戶期望拖動整個屏幕並揭示第二個列表。但是這兩個列表都有自己的內部滾動功能,並且不允許整個屏幕滾動爲一個整體。
幸運的是,列表實際上只包含很少的項目(平均每個項目5個)。因此,理論上,我可以填充一些LinearLayouts容器。問題是,列表顯示的數據來自Cursor並且是動態的。雖然我知道CursorAdapter的newView()和bindView()方法,但我不太瞭解如何將適配器連接到LinearLayout容器而不是ListViews。即CursorAdapter如何知道它必須在其光標中找到的5個項目中創建5個行項目?我在哪裏創建遍歷遊標項目並在LinearLayout容器中創建項目的循環?當光標中的數據發生變化時,如何刷新LinearLayout的內容?我找到的所有示例都將這些問題整齊地包裝到由ListActivity提供的ListView中,但我無法使用ListView!
我很困惑!
馬努
編輯:這裏是(片段)活性的下列breceivemail建議當XML佈局。在breceivemail的建議之前註釋掉了原來的LinearLayout容器。還應該注意的是,整個活動依次包含在TabHost中,但我不知道這對於手頭的問題是否有所幫助。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<!--
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
-->
<TextView android:id="@+id/title"
android:textSize="36sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/SelectPlayer"/>
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Playing"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:background="#999999"/>
<fragment android:name="com.myDomain.myApp.PlayerListFragment"
android:id="@+id/playing"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Reserve"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:background="#999999"/>
<fragment android:name="com.myDomain.myApp.PlayerListFragment"
android:id="@+id/reserve"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
這不是一個更好的解決方案,只是創建您的佈局,所以兩個ListView適合屏幕尺寸? – kaspermoerch
這是一個公平的評論@KasperMoerch,但列表項的高度是非常大的設計。列表中的項目需要很快被使用,尤其是第一個列表中的項目,這是一個用戶界面原則,越大的事情越快到達並與之交互。 – manu3d
這是公平的 - 但ListView的一般意義在於它是可滾動的,這意味着您可以滾動到列表中的所需點,這也意味着如果您在一個屏幕中有兩個ListView,它們只需佔用一半每個屏幕。我覺得你正在做某種遊戲,這很酷。你不應該認爲這是批評或者我是固執的 - 我只是試圖挑戰你選擇的UI設計。有可能不是一個更好的解決方案。 – kaspermoerch