Wenn ich null für root studio übergebe, erhalte ich folgende Warnung:
Vermeiden Sie es, null als Ansichtsstamm zu übergeben (Layoutparameter müssen im Stammelement des aufgeblasenen Layouts aufgelöst werden).
Es wird ein Nullwert in angezeigt getGroupView
. Bitte helfen Sie.
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;
}
}
setContentView(layoutId)
. Wenn Sie versuchen, einer vorhandenen ViewGroup eine neue Ansicht hinzuzufügen, sollten Sie wahrscheinlich nur das übergeordnete Element übergeben und den Inflater die neue Ansicht anhängen lassen.onCreateInputView()
für einInputMethodService
.Ich habe einen guten Artikel über gefunden
LayoutInflater
. Der Autor erklärt, wie alle Versionen derinflate
Methode funktionieren, und gibt Beispiele fürListView
undAlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Update Nr. 1.
Diese Antwort hat mir kürzlich auch geholfen. https://stackoverflow.com/a/5027921/1065835
quelle
Aus irgendeinem Grund lässt View.inflate den Flusenfehler verschwinden, wenn Sie View.inflate verwenden, anstatt ihn aus einem Layoutinflater aufzublasen. Ich dachte, ich würde das hier posten, da dieser Thread oben in der Google-Suche steht ...
quelle
Wenn Sie wirklich keine haben
parent
(zum Beispiel eine Ansicht für erstellenAlertDialog
), haben Sie keine andere Möglichkeit als zu übergebennull
. Tun Sie dies, um eine Warnung zu vermeiden:quelle
ViewGroup root = (ViewGroup) myActivity.findViewById(R.id.my_main_content);
womy_main_content
sich die ID des äußersten Containers in der Layoutdatei meiner Aktivität befindet.@SuppressLint("InflateParams")
oben Ihre Methode hinzu, um Lint für diesen zu unterdrücken .Für den folgenden
AlertDialog
Code kann Code verwendet werdenquelle
Eine nette Information, die ich gefunden habe, als ich nach einer Möglichkeit gesucht habe, dies zu lösen. Laut Dave Smith,
Die
ViewGroup
hier als Teil der Inflate-Methode angeforderten Parameter werden verwendet, um das Styling auf höherer Ebene zu erben. Während das Übergeben von null harmlos erscheint, kann es später tatsächlich zu ernsthaften Problemen für Ihre App führen. Lesen Sie mehr dazu hier .quelle
Hier ist ein Bild als Referenz
quelle