android-添加视图太慢了

android-添加视图太慢了,android,view,android-inflate,Android,View,Android Inflate,我需要向ScrollView添加大约10个视图,并使用以下代码 final LinearLayout item_div = (LinearLayout)activity.findViewById(R.id.item_div); final LayoutInflater inflater = (LayoutInflater)context.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); for (

我需要向ScrollView添加大约10个视图,并使用以下代码

final LinearLayout item_div = (LinearLayout)activity.findViewById(R.id.item_div);
final LayoutInflater inflater = (LayoutInflater)context.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
for (int i = 0; i < itemArray.length(); i++) {
   View itemTemplate = inflater.inflate(R.layout.item, null);
   item_div.addView(itemTemplate);
}
final LinearLayout item_div=(LinearLayout)activity.findViewById(R.id.item_div);
最终LayoutFlater充气器=(LayoutFlater)context.getApplicationContext().getSystemService(context.LAYOUT\u充气器\u服务);
对于(int i=0;i
但问题是,这个过程大约需要1-2秒,它会阻塞主UI,等待的不是从服务器获取数据,而是直接添加视图(它们有点重)。现在我的问题是,我可以使用一个新的线程或后台服务来完成这个任务吗?任何类型的线程或后台任务都能处理这种类型的视图问题吗?或者在后台做这件事毫无意义,我应该考虑<代码> RealReVIEW < /代码>或其他解决方案吗?多谢各位

我可以使用新的线程或后台服务来执行此操作吗

不,您不能从后台线程触摸UI,否则将引发异常

在后台做这件事毫无意义,我应该考虑回收或其他解决方案
没有看到你所采取的方法的全部目的,很难给出任何答案,但是如果你只需要滚动容器
RecyclerView
可能会帮忙。另外,也许你只需要把你需要展示的孩子的观点结合在一起,你可以考虑准备组合布局,然后只充气一个,而不是做10个单独的充气。另一种方法是从代码中创建子视图,但我将其作为最后一个选项进行检查。

结果表明,处理我的问题的最佳方法是将ListView与Adapeter一起使用,或者更好(但也更难)的方法是使用户RecycleView。
通过使用ListView,我可以在AsynTask中运行膨胀视图,或者使用并发API,因为我的列表列表的折叠/折叠场景不利于RecyclerView ViewHolder模式,因为UI被阻塞,所以有太多的帧跳过以编程方式在LinearLayout中添加视图时
. 在这里查看我的答案,它可能会给您一些想法

添加视图并不慢。正在膨胀。简化视图可能会有所帮助。您的
R.layout.item
是什么。该视图的类中是否有自定义逻辑,或者它只是一个复杂的布局?只是一个相对复杂的布局否,您不能在视图层次结构中多次添加同一视图。你需要优化你的代码。10个视图是否同时显示?如果不是,RecyclerView(或只是ListView)将对正确的回收有很大帮助。这不完全是我想要的,但还是给了我一个线索,感谢好奇:这与我以前接受的答案中提到的你撤销接受的选项有什么不同?你给了我一系列解决方案,但只有回收才是答案,我想对未来的读者来说,我的观点会更清楚。但是很好,我会把它改回原来的样子。