基于可见性加载图像



这是我的问题:我有一个"图库",有28个垂直滚动的图像,加载时会出现内存不足的错误。为了克服这一点,我正试图遵循以下指南:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html制作所有图像的缓存,然后使用适配器来确定哪些图像实际上在屏幕上,并且只在需要时加载这些图像。这是我的xml布局的一部分:

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView"
    android:background="@drawable/background7">
<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="?android:attr/dividerHorizontal"
        android:showDividers="middle">
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:divider="@color/Black"
            android:showDividers="end"
            android:layout_marginBottom="-35dp"
            android:weightSum="100">
        <ImageView
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:id="@+id/image1"
                android:layout_column="1"
                android:src="@drawable/plane1"
                android:layout_weight="50"
                android:clickable="true"
                android:longClickable="true"/>
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Boeing 757-200"
                android:id="@+id/textView"
                android:layout_column="5"
                android:layout_marginTop="75dp"
                android:layout_marginLeft="10dp"
                android:layout_weight="50"
                android:textStyle="bold"
                android:textColor="#000"/>
    </TableRow>
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="-35dp"
            android:weightSum="100">
        <ImageView
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:id="@+id/image2"
                android:layout_column="1"
                android:src="@drawable/plane2"
                android:layout_weight="50"/>
        <TextView
                android:textStyle="bold"
                android:textColor="#000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="C-17"
                android:id="@+id/textView"
                android:layout_column="5"
                android:layout_marginTop="75dp"
                android:layout_marginLeft="10dp"
                android:layout_weight="50"/>
    </TableRow>
    <TableRow
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginBottom="-35dp"
            android:weightSum="100">
        <ImageView
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:id="@+id/image3"
                android:layout_column="1"
                android:src="@drawable/plane3"
                android:layout_weight="50"/>
        <TextView
                android:textStyle="bold"
                android:textColor="#000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Cessna Citation Sovereign"
                android:id="@+id/textView"
                android:layout_column="5"
                android:layout_marginTop="75dp"
                android:layout_marginLeft="10dp"
                android:layout_weight="50"/>
    </TableRow>

每个TableRow都是一个不同的图像,并且它连续到28个图像。我的问题是,我需要使用什么样的适配器来确定需要加载的图像和执行此操作的一般设置,或者它们是否不那么复杂,可以完成同样的事情。

您当前的设置不是最好的。您可能希望使用列表视图而不是当前布局:

<ListView 
    android:id="@+id/listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

这里有一个关于listviews的好教程:链接

最新更新