android - layoutinflater - Evite pasar nulos como raíz de la vista(es necesario resolver los parámetros de diseño en el elemento raíz del diseño inflado)
inflate android studio example (5)
Pasar nulo para root studio me da esta advertencia:
Evite pasar nulos como raíz de la vista (es necesario resolver los parámetros de diseño en el elemento raíz del diseño inflado)
Está mostrando un valor nulo en getGroupView
. Por favor ayuda.
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;
}
}
Aquí tienes, por alguna razón, usar View.inflate en lugar de inflar desde un layoutinflater hace desaparecer el error de pelusa. Pensé que publicaría esto aquí ya que este hilo está en la parte superior de la Búsqueda de Google ...
view = View.inflate(context,R.layout.custom_layout,null);
Cuando realmente no tiene ningún parent
(por ejemplo, creando una vista para AlertDialog
), no tiene otra manera que pasar null
. Así que haz esto para evitar la advertencia:
final ViewGroup nullParent = null;
convertView = layoutInflater.inflate(R.layout.list_item, nullParent);
En lugar de hacer
convertView = infalInflater.inflate(R.layout.list_item, null);
hacer
convertView = infalInflater.inflate(R.layout.list_item, parent, false);
Lo inflará con el padre dado, pero no lo adjuntará al padre.
Encontré un buen artículo sobre LayoutInflater
. El autor explica cómo funcionan todas las versiones del método AlertDialog
y da ejemplos de ListView
y AlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Actualización # 1.
Esta respuesta recientemente me ayudó, también. https://.com/a/5027921/1065835
Una buena información que encontré mientras buscaba una manera de resolver esto. Según Dave Smith,
Inflación de diseño es el término utilizado en el contexto de Android para indicar cuándo un recurso de diseño XML se analiza y se convierte en una jerarquía de objetos de vista.
El ViewGroup
solicitado aquí como parte de los parámetros del método de inflado se utiliza para heredar un estilo de nivel superior. Si bien pasar nulo puede parecer inofensivo, puede causar graves problemas para su aplicación más adelante. Lea más sobre esto here .