final void fetchAttributes(int[] styleableIDs, TypedArray result) { result.reset(); if (m_attributes == null || m_resourceIDs == null) { return; } boolean needStrings = false; for (int i = 0, e = styleableIDs.length; i != e; ++i) { int id = styleableIDs[i]; for (int o = 0; o != m_attributes.length; o += ATTRIBUTE_LENGHT) { int name = m_attributes[o + ATTRIBUTE_IX_NAME]; if (name >= m_resourceIDs.length || m_resourceIDs[name] != id) { continue; } int valueType = m_attributes[o + ATTRIBUTE_IX_VALUE_TYPE]; int valueData; int assetCookie; if (valueType == TypedValue.TYPE_STRING) { valueData = m_attributes[o + ATTRIBUTE_IX_VALUE_STRING]; assetCookie = -1; needStrings = true; } else { valueData = m_attributes[o + ATTRIBUTE_IX_VALUE_DATA]; assetCookie = 0; } result.addValue(i, valueType, valueData, assetCookie, id, 0); } } if (needStrings) { result.setStrings(m_strings); } }