Passer null pour root studio me donne cet avertissement:
Évitez de passer null comme racine de la vue (besoin de résoudre les paramètres de mise en page sur l'élément racine de la mise en page gonflée)
Il affiche une valeur nulle dans getGroupView
. Veuillez aider.
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)
. Si vous essayez d'ajouter une nouvelle vue à un ViewGroup existant, vous devriez probablement juste passer le parent et laisser le gonfleur attacher la nouvelle vue.onCreateInputView()
d'unInputMethodService
.J'ai trouvé un bon article sur
LayoutInflater
. L'auteur explique le fonctionnement de toutes les versions de lainflate
méthode et donne des exemplesListView
etAlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Mise à jour # 1.
Cette réponse m'a également aidé récemment. https://stackoverflow.com/a/5027921/1065835
la source
Voilà, pour une raison quelconque, utiliser View.inflate au lieu de gonfler à partir d'un layoutinflater fait disparaître l'erreur de peluches. Je pensais que je publierais ceci ici car ce fil est en haut de la recherche Google ...
la source
Lorsque vous n'en avez vraiment pas
parent
(par exemple, créer une vue pourAlertDialog
), vous n'avez pas d'autre moyen que de passernull
. Faites donc ceci pour éviter les avertissements:la source
ViewGroup root = (ViewGroup) myActivity.findViewById(R.id.my_main_content);
oùmy_main_content
est l'ID du conteneur le plus à l'extérieur dans le fichier de mise en page de mon activité.@SuppressLint("InflateParams")
au-dessus de votre méthode.Pour le
AlertDialog
code ci-dessous peut être utiliséla source
Une belle information que j'ai trouvée en cherchant un moyen de résoudre ce problème. Selon Dave Smith,
Le
ViewGroup
paramètre demandé ici dans le cadre des paramètres de la méthode de gonflement est utilisé pour hériter d'un style de niveau supérieur. En savoir plus à ce sujet ici .la source
voici une photo pour référence
la source