如何解决“布局有超过 80 个视图,对性能不利”?

use*_*764 7 performance android tablerow android-layout

我正在做一个有点复杂的布局,只是我无法修复 LINT 指示的错误(...黑莓的视图超过 80 个,对性能不利) 这是布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".Activity_schedapunti">


    <TableLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".7"
            android:gravity="center_horizontal"
            android:text="@string/esame_visivo"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            android:background="@android:color/black"/>

            <TextView 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".3"
            android:gravity="center_horizontal"
            android:text="@string/punteggio_parziale"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            android:background="@android:color/black"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                 <TextView 
                     android:id="@+id/textview_aspetto"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/aspetto"/>                  
               <TextView 
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/coeff_x1"
                     android:textStyle="bold"
                     android:textColor="@color/light_yellow"/>
               <EditText 
                     android:id="@+id/edittext_aspetto"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:gravity="center_horizontal"
                     android:inputType="number"
                     android:singleLine="true" />
            </LinearLayout>

            <TextView 
                android:id="@+id/textview_puteggio_parziale_aspetto"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>
        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                 <TextView 
                     android:id="@+id/textview_punti_colore"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/colore"/>                   
               <TextView 
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="@string/coeff_x2"
                     android:textStyle="bold"
                     android:textColor="@color/light_yellow"/>
               <EditText 
                     android:id="@+id/edittext_punti_colore"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:gravity="center_horizontal"
                     android:inputType="number"
                     android:singleLine="true" />
            </LinearLayout>

            <TextView 
                android:id="@+id/textview_puteggio_parziale_colore"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:gravity="center_horizontal"
                android:text="@string/esame_olfattivo"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                android:background="@android:color/black"/>

            <TextView 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".3"
                android:gravity="center_horizontal"
                android:text="@string/punteggio_parziale"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                android:background="@android:color/black"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_intensita"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/intensita"/>                 
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x1"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_intensita"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_intensita"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_complessita"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/complessita"/>                   
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x2"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_complessita"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_complessita"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_qualita"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/qualita"/>                   
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x3"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_qualita"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_qualita"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>




        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:gravity="center_horizontal"
                android:text="@string/esame_gusto_olfattivo"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                android:background="@android:color/black"/>

            <TextView 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".3"
                android:gravity="center_horizontal"
                android:text="@string/punteggio_parziale"
                android:textColor="@android:color/white"
                android:textStyle="bold"
                android:background="@android:color/black"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_struttura"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/struttura"/>                 
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x1"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_struttura"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_struttura"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_equilibrio"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/equilibrio"/>                
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x1"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_equilibrio"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_equilibrio"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_intensita_gusto_olfattivo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/intensita"/>                 
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x1"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_intensita_gusto_olfattivo"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_intensita_gusto_olfattivo"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_persistenza"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/persistenza"/>                   
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x2"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_persistenza"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                android:id="@+id/textview_puteggio_parziale_persistenza"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_weight=".3"/>
        </TableRow>

        <TableRow 
            android:layout_width="match_parent"
            android:layout_height="wrap_content"> 
            <LinearLayout 
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".7"
                android:orientation="horizontal">               
                <TextView 
                    android:id="@+id/textview_punti_qualita_gusto_olfattivo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/qualita"/>                   
                <TextView 
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:text="@string/coeff_x3"
                   android:textStyle="bold"
                   android:textColor="@color/light_yellow"/>
                <EditText 
                   android:id="@+id/edittext_punti_qualita_gusto_olfattivo"
                   android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:gravity="center_horizontal"
                   android:inputType="number"
                   android:singleLine="true" />
            </LinearLayout>
            <TextView 
                

cod*_*gic 5

这看起来绝对是一个很好的候选者ListView。正如我在评论中所说,您可以layout在您的Adapter. 我不知道你如何获取数据,所以我不能确切地说如何检查,但在每一轮中getView()你可以检查数据并决定View显示/隐藏哪些数据。

只需创建每行可能需要的layoutsTextView等...,看起来可能在垂直内部,内部LinearLayout有水平LinearLayouts,或者只是然后根据您的需要RelativeLayout更改visibilityvisible/ 。gone

如果您不熟悉这样做,那么您可以查看本教程

适配器文档

列表视图文档

正如评论中指出的那样,如果您的方法非常不同,则可以layout在您的方法中夸大不同的 s ,这可能会使切换成为一种糟糕的方法。这仅取决于您的数据和s。getView()Adapterlayoutsvisibilitylayout