ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-11-22 12:25:06  阅读:246  来源: 互联网

标签:tablerow performance android-layout android


我的布局有点复杂,只是无法解决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 
                android:id="@+id/textview_puteggio_parziale_qualita_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_armonia"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/armonia"/>                   
                <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_armonia"
                   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_armonia"
                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/punteggio_totale"
                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:textColor="@color/light_yellow"
                android:textStyle="bold"
                android:background="@android:color/black"/>
        </TableRow>
    </TableLayout>
</ScrollView>

我读过使用ListView,但是应该怎么做?并非所有行都是相等的,或者在任何情况下,中间都有一些元素与其他所有行都不相等!

图片:

解决方法:

这绝对看起来像是ListView的不错的选择.如我在评论中所述,您可以在适配器中使用自定义布局.我不知道您是如何获取数据的,所以我无法确切说明如何检查,但是在每轮getView()中,您都可以检查数据并确定要显示/隐藏的视图.

只需使用每行可能需要的TextViews等来创建布局,看起来可能像是在内部带有水平LinearLayouts的垂直LinearLayout内部,或者只是一个RelativeLayout,然后根据需要将可见性更改为visible / gone.

如果您不熟悉此操作,则可以看到this tutorial.

Adapter Docs

ListView Docs

如注释中所指出的,如果布局非常不同,则可以在Adapter的getView()方法中膨胀不同的布局,这可能会使切换可见性成为一种不好的方法.这仅取决于您的数据和布局.

标签:tablerow,performance,android-layout,android
来源: https://codeday.me/bug/20191122/2059796.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有