Null doorgeven voor root studio geeft me deze waarschuwing:
Vermijd het doorgeven van null als de hoofdweergave van de weergave (moet de lay-outparameters oplossen in het hoofdelement van de opgeblazen lay-out)
Het toont een null-waarde in getGroupView
. Help alstublieft.
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;
}
}
Antwoord 1, autoriteit 100%
In plaats van te doen
convertView = infalInflater.inflate(R.layout.list_item, null);
doen
convertView = infalInflater.inflate(R.layout.list_item, parent, false);
Het zal het opblazen met de gegeven ouder, maar zal het niet aan de ouder bevestigen.
Antwoord 2, autoriteit 15%
Ik heb een goed artikel gevonden over LayoutInflater
. De auteur legt uit hoe alle versies van de inflate
methode werken en geeft voorbeelden van ListView
en AlertDialog
http ://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Update #1.
Dit antwoord heeft me onlangs ook geholpen.
https://stackoverflow.com/a/5027921/1065835
Antwoord 3, autoriteit 14%
Alsjeblieft, om de een of andere reden zorgt het gebruik van View.inflate in plaats van opblazen vanuit een layout-inflater ervoor dat de pluisfout verdwijnt.
Ik dacht ik post dit hier, aangezien deze thread bovenaan Google Zoeken staat…
view = View.inflate(context,R.layout.custom_layout,null);
Antwoord 4, autoriteit 9%
Bewerken:
Op het moment dat ik dit antwoord schreef, was ik niet op de hoogte van Lint-onderdrukkingen. Het is beter om Lint te onderdrukken in plaats van de IDE te misleiden. Voeg dit toe boven de regel of methode:
@SuppressLint("InflateParams")
Oud antwoord:
Als je echt geen parent
hebt (bijvoorbeeld om een weergave te maken voor AlertDialog
), heb je geen andere manier dan null
door te geven . Doe dit dus om waarschuwingen te vermijden:
final ViewGroup nullParent = null;
convertView = layoutInflater.inflate(R.layout.list_item, nullParent);
Antwoord 5, autoriteit 2%
Voor AlertDialog
kan balgcode worden gebruikt
convertView = layoutInflater.inflate(R.layout.list_item, findViewById(android.R.id.content), false);
Antwoord 6, autoriteit 2%
Een leuke informatie die ik vond toen ik een manier zocht om dit op te lossen. Volgens Dave Smith,
Lay-outinflatie is de term die in de context van Android wordt gebruikt om aan te geven wanneer een XML-layoutbron wordt geparseerd en geconverteerd naar een hiërarchie van View-objecten.
De ViewGroup
waar hier om is gevraagd als onderdeel van de parameters van de inflate-methode wordt gebruikt om styling op een hoger niveau over te nemen. Hoewel het doorgeven van null onschuldig kan lijken, kan het later ernstige problemen voor uw app veroorzaken. Lees hier hiermeer over.
Antwoord 7
Hier is een afbeelding ter referentie:
return inflater.inflate(R.layout.some_layout, container, true);
// for the last parameter use true, false or simply don't declare