【发布时间】:2012-11-19 12:29:40
【问题描述】:
我目前正在使用从 XML 膨胀的视图在启动时填充 Adapter
private void addView(Context context) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.deal_tile, this, null);
mViews.add(view);
}
但是,我发现将视图存储在 AdapterView 内的列表中会导致这些视图中的控件出现问题,因此我想改用 Adapter#getView(int position, View recycle, ViewGroup container) 中的回收功能。
出于这个原因,我想使用自定义视图类,以便在将其重新填充到适配器中之前进行完整性检查 (if(recycle!=null && recycle instanceof CustomView))。但是,我不知道您如何从 XML 扩展自定义视图类。我可以了解您如何添加一个膨胀视图到自定义视图,我可以了解如何将自定义视图插入 XML 布局等,显然我很高兴直接使用LayoutInflater,但我找不到生成自定义视图本身的等价物。我想重用已有的 XML;因此,我不想直接对元素(以及它们的外观)进行编程。
【问题讨论】:
-
顺便说一句,如果这个问题不是重复的东西,我会感到惊讶,但我已经浏览了大约 20 个问题,它们似乎都略有不同。我认为关于“通货膨胀”和“自定义视图”的问题可能需要系统重新命名。
-
我想知道你是否可以去
XmlPullParser parser = context.getResources().getXml(R.layout.deal_tile);AttributeSet attributes = Xml.asAttributeSet(parser);View view = new CustomView(context, attributes);还是会很麻烦? -
我通常会像这样进行健全性检查:
if (recycle == null || recycle.getId() != R.layout.deal_tile)。如果计算结果为true,则需要再次膨胀布局。 -
仍然对最初的问题感到好奇,但它确实解决了我的直接问题。
标签: android xml view subclass inflate