根据可见性加载图像

时间:2013-08-01 19:58:40

标签: android image memory adapter

这是我的问题:我有一个“画廊”,有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个图像。我的问题是我需要使用什么样的适配器来确定需要加载的图像以及执行此操作的常规设置,或者如果它们不那么复杂就可以完成同样的事情。

1 个答案:

答案 0 :(得分:0)

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

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

这是关于列表视图的一个很好的教程:link