Tôi đang đối mặt với một vấn đề rất phổ biến: Tôi đã sắp xếp một hoạt động và bây giờ hóa ra nó sẽ hiển thị một vài mục trong này ScrollView
. Cách thông thường để làm điều đó là sử dụng cái hiện có ListAdapter
, kết nối nó với a ListView
và BOOM, tôi sẽ có danh sách các mục của mình.
NHƯNG Bạn không nên đặt một cái lồng ListView
vào một cái ScrollView
vì nó làm vướng quá trình cuộn - ngay cả Android Lint cũng phàn nàn về điều đó.
Vì vậy, đây là câu hỏi của tôi:
Làm cách nào để kết nối a ListAdapter
với một LinearLayout
hoặc thứ gì đó tương tự?
Tôi biết giải pháp này sẽ không chia tỷ lệ cho nhiều mục nhưng danh sách của tôi rất ngắn (<10 mục) nên việc sử dụng lại các lượt xem là không thực sự cần thiết. Hiệu suất khôn ngoan Tôi có thể sống với việc đặt tất cả các chế độ xem trực tiếp vào LinearLayout
.
Một giải pháp mà tôi đã đưa ra là đặt bố cục hoạt động hiện có của tôi trong phần headerView của ListView
. Nhưng điều này giống như lạm dụng cơ chế này, vì vậy tôi đang tìm kiếm một giải pháp sạch hơn.
Ý tưởng?
CẬP NHẬT: Để tạo cảm hứng cho hướng đi đúng, tôi thêm một bố cục mẫu để hiển thị vấn đề của mình:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/news_detail_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="visible">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFF"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/news_detail_layout_side_padding"
android:paddingRight="@dimen/news_detail_layout_side_padding"
android:paddingTop="@dimen/news_detail_layout_vertical_padding"
android:paddingBottom="@dimen/news_detail_layout_vertical_padding"
>
<TextView
android:id="@+id/news_detail_date"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="LALALA"
android:textSize="@dimen/news_detail_date_height"
android:textColor="@color/font_black"
/>
<Gallery
android:id="@+id/news_detail_image"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:paddingTop="5dip"
android:paddingBottom="5dip"
/>
<TextView
android:id="@+id/news_detail_headline"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:gravity="center_horizontal"
android:text="Some awesome headline"
android:textSize="@dimen/news_detail_headline_height"
android:textColor="@color/font_black"
android:paddingTop="@dimen/news_detail_headline_paddingTop"
android:paddingBottom="@dimen/news_detail_headline_paddingBottom"
/>
<TextView
android:id="@+id/news_detail_content"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="Here comes a lot of text so the scrollview is really needed."
android:textSize="@dimen/news_detail_content_height"
android:textColor="@color/font_black"
/>
<!---
HERE I NEED THE LIST OF ITEMS PROVIDED BY THE EXISTING ADAPTER.
They should be positioned at the end of the content, so making the scrollview smaller is not an option.
---->
</LinearLayout>
</ScrollView>
</LinearLayout>
CẬP NHẬT 2 Tôi đã thay đổi tiêu đề để dễ hiểu hơn (nhận được phản đối, doh!).