避免传递null作为视图根(需要parsing膨胀布局的根元素上的布局参数)
为root工作室传递null给了我这个警告:
避免传递null作为视图根(需要parsing膨胀布局的根元素上的布局参数)
它在getGroupView
显示一个空值。 请帮忙。
public class ExpandableListAdapter extends BaseExpandableListAdapter { private Context _context; private List<String> _listDataHeader; // header titles // child data in format of header title, child title private HashMap<String, List<String>> _listDataChild; public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listChildData) { super(); this._context = context; this._listDataHeader = listDataHeader; this._listDataChild = listChildData; } @Override public Object getChild(int groupPosition, int childPosititon) { return this._listDataChild.get(this._listDataHeader.get(groupPosition)) .get(childPosititon); } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { final String childText = (String) getChild(groupPosition, childPosition); if (convertView == null) { LayoutInflater infalInflater = (LayoutInflater) this._context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = infalInflater.inflate(R.layout.list_item, null); } TextView txtListChild = (TextView) convertView .findViewById(R.id.lblListItem); txtListChild.setText(childText); return convertView; } @Override public int getChildrenCount(int groupPosition) { return this._listDataChild.get(this._listDataHeader.get(groupPosition)) .size(); } @Override public Object getGroup(int groupPosition) { return this._listDataHeader.get(groupPosition); } @Override public int getGroupCount() { return this._listDataHeader.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { String headerTitle = (String) getGroup(groupPosition); if (convertView == null) { LayoutInflater infalInflater = (LayoutInflater) this._context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = infalInflater.inflate(R.layout.list_group, null); } TextView lblListHeader = (TextView) convertView .findViewById(R.id.lblListHeader); lblListHeader.setTypeface(null, Typeface.BOLD); lblListHeader.setText(headerTitle); return convertView; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }
而不是做
convertView = infalInflater.inflate(R.layout.list_item, null);
做
convertView = infalInflater.inflate(R.layout.list_item, parent, false);
它会用给定的父母夸大它,但不会将其附加到父母。
我发现了一篇关于LayoutInflater
的好文章。 作者解释了inflate
方法的所有版本是如何工作的,并给出了ListView
和AlertDialog
例子
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
更新#1。
这个答案最近也帮助了我。 https://stackoverflow.com/a/5027921/1065835
当你真的没有任何parent
(例如为AlertDialog
创build视图)时,除了传递null
之外别无它法。 所以这样做是为了避免警告:
final ViewGroup nullParent = null; convertView = layoutInflater.inflate(R.layout.list_item, nullParent);
在这里你去,出于某种原因使用View.inflate而不是从layoutinflater膨胀使lint错误消失。 因为这个post在Googlesearch的顶部,所以我想在这里发布…
view = View.inflate(context,R.layout.custom_layout,null);
我find一个很好的信息来寻找解决办法。据戴夫·史密斯(Dave Smith)
布局通货膨胀是在Android环境中使用的术语,用于指示XML布局资源何时被parsing并转换为View对象的层次结构。
ViewGroup
在这里被要求作为膨胀方法的一部分参数用于inheritance更高级别的样式。虽然传递null看起来是无害的,它实际上可能会导致您的应用程序在以后严重的问题。 阅读更多关于这里 。
- NSURLConnection的XCode 4警告“expression式结果未使用”
- 如何find哪些promise在nodejs中未处理UnhandledPromiseRejectionWarning?
- 在Xcode中,如何抑制特定源文件中的所有警告?
- Apple Interface Builder警告:内容矩形不会完全位于屏幕上,并且可能对所有屏幕都不可见
- 自动属性综合(@property)和inheritance
- 用于png图像的chrome中的MIMEtypes警告
- 在Release版本中使用assert()时避免未使用的variables警告
- 如何修复“types列表的expression式需要未经检查的转换…”?
- iPhone操作系统内存警告。 不同级别的含义是什么?