2

我目前正在编写一个 android 应用程序,我希望它编写/设计得很好。

现在,我在一个我经常使用的相对布局中有一组多重视图(2 个图像视图,3 个文本视图)。有没有办法创建一个自定义视图来重新组合它们?

我截取了这张截图来解释我现在所做的事情:

在此处输入图像描述

如您所见,现在我刚刚复制/粘贴了包含我所有视图的框架布局...这是正确的方法还是有更清洁的解决方案?

多谢你们

4

2 回答 2

2

没有更好的方法是将您放入布局中的所有内容放入ArrayList对象中。然后创建一个以您想要的方式从该对象ArrayAdapter中填充一个。ListView

这种技术的优点是您获得了一种视图回收机制,该机制将回收Views您的内部ListView以减少内存消耗。

简而言之,您必须:

1.创建一个代表单行数据的对象。

2.创建ArrayList这些对象中的一个。

3.创建一个包含 ListView 的布局或使用代码将 ListView 添加到您的主布局。

4.创建单行布局(您已经拥有它)。

5.创建一个ViewHolder从 的角度代表数据行的视觉方面Views

6.创建一个自定义ArrayAdapter,将根据您的需要填充行。

7.最后把这个分配ArrayAdapter给你的ListViewin onCreate

您可以通过阅读我写的这篇博客文章来了解如何实现这一点:

创建自定义 ArrayAdapter

于 2013-04-10T15:45:35.713 回答
0

如果您在代码中而不是界面构建器中执行此操作,您可以每次使用LayoutInflator从您的 xml 创建一个视图,然后将这些视图作为子视图添加到您的 LinearLayout。这也将允许您更改数字,而无需复制粘贴每个新视图。

LayoutInflater layoutInflator = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout ll = (LinearLayout) findViewById(R.id.yourLayout);
for(int i=0; i<numOfSubViews; i++){
    View view = layoutInflator.inflate(R.layout.yourFrameLayout, null);
    ll.add(view);
}
于 2013-04-10T15:52:24.913 回答