Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 减少应用程序中所需的布局xml数量_Android_Xml_Layout - Fatal编程技术网

Android 减少应用程序中所需的布局xml数量

Android 减少应用程序中所需的布局xml数量,android,xml,layout,Android,Xml,Layout,假设我想创建一个Android应用程序,它在主要活动中显示一个包含200人姓名的列表。当用户点击任何名字时,他们会被带到一个屏幕,显示关于此人的可用信息。每个人的详细信息可能会有所不同(有些人没有地址等) 我将如何处理201个不同布局文件(xml)的问题 我认为做201个活动不是个好主意 如果我使用片段,那么我必须生成200个xml以及201个java文件(针对每个不同的片段) 如果我使用布局充气器或视图切换器,即使这样,我也必须生成201个XML 那么,有没有办法减少所需的布局数量呢?没有,您

假设我想创建一个Android应用程序,它在主要活动中显示一个包含200人姓名的列表。当用户点击任何名字时,他们会被带到一个屏幕,显示关于此人的可用信息。每个人的详细信息可能会有所不同(有些人没有地址等)

我将如何处理201个不同布局文件(xml)的问题

我认为做201个活动不是个好主意

如果我使用片段,那么我必须生成200个xml以及201个java文件(针对每个不同的片段)

如果我使用布局充气器或视图切换器,即使这样,我也必须生成201个XML


那么,有没有办法减少所需的布局数量呢?

没有,您根本不需要那么多文件。事实上,您所需要的只是包含人员列表的主屏幕,然后是包含详细信息占位符的屏幕

当用户被单击时(可能来自某种列表视图),您可以将与该用户相关的详细信息传递到“详细信息”活动中,在该活动中可以很好地显示它,从而重用相同的类/活动/布局

这是一个很好的教程,向您展示了在活动之间传递信息的基本机制


除了地址、姓名等数据发生变化外,每个人的布局是否有所不同?因为如果他们没有不同,你可以为每个人使用相同的布局,只需加载每个人的相应数据。如果您能提供有关如何存储数据以及如何显示数据的更多信息,我可以给您一个更好的答案。

如果我没弄错,我只会使用带有自定义布局的listview和带有所有必要视图的activity/fragment(以编程方式使用textViewName.setText(user.getName())填充它们)如果(user.getZipCode()==null)textViewZip.setVisibility(View.GONE);布局不同,但它们可能有一个或多个公用小部件(TextView等)。还有按钮的OnClickListner(如果有)将执行不同的操作。也许如果你解释得更好一点,我可以进一步帮助你。假设第一个人是人类,那么布局将包括:姓名(TextView)地址(TextView)电话(TextView)呼叫(按钮)现在第二个人是僵尸,所以布局是:姓名(TextView)太空船号(文本视图)Ping(按钮)正如您所看到的,这两个布局有一个共同的文本视图“名称”,但调用按钮对人执行的操作与Ping按钮对僵尸执行的操作不同。对于布局,按钮的作用无关紧要。您可以创建一个布局,其中包含所有可能的视图。您需要的视图设置为可见,不需要的视图设置为可见设置为gone。您可以根据要显示其数据的人的类型和身份动态加载文本视图和按钮中的文本。单击侦听器也可以根据您要显示的内容执行不同的操作。如果无法将其推广到目前为止,您仍然可以为人类创建一个布局,而不是dif好的,答案几乎是完整的,但是,(1)如果我加载一个包含1000个视图的xml(比如,10个视图是可见的),其余的990个视图是不可见的,这会影响性能吗?(2)您是否建议在ClickListener中使用switch语句根据我想要显示的内容执行不同的操作?布局是不同的(这就是我的问题所在)。