Passar null para o root studio me dá este aviso:
Evite passar nulo como raiz da visualização (é necessário resolver os parâmetros de layout no elemento raiz do layout inflado)
Está mostrando um valor nulo em getGroupView
. Por favor ajude.
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;
}
}
android
android-layout
warnings
layout-inflater
cerquilha
fonte
fonte
setContentView(layoutId)
. Se você está tentando adicionar uma nova visão a um grupo de vistas existente, provavelmente deve passar o pai e deixar o inflador anexar a nova visão.onCreateInputView()
de umInputMethodService
.Eu encontrei um bom artigo sobre
LayoutInflater
. O autor explica como todas as versões doinflate
método funcionam e fornece exemplosListView
eAlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Atualização # 1.
Esta resposta recentemente me ajudou também. https://stackoverflow.com/a/5027921/1065835
fonte
Aqui está, por algum motivo, usar View.inflate em vez de inflar a partir de um layoutinflater faz com que o erro de fiapo desapareça. Pensei em postar isso aqui, já que esse tópico está no topo da Pesquisa do Google ...
fonte
Quando você realmente não tem nenhuma
parent
(por exemplo, criando view paraAlertDialog
), não tem outro jeito senão passarnull
. Faça isso para evitar aviso:fonte
ViewGroup root = (ViewGroup) myActivity.findViewById(R.id.my_main_content);
ondemy_main_content
é o ID do contêiner mais externo no arquivo de layout da minha atividade.@SuppressLint("InflateParams")
acima do seu método.Para
AlertDialog
código abaixo pode ser usadofonte
Uma boa informação que encontrei enquanto procurava uma maneira de resolver isso.
O
ViewGroup
pedido aqui, como parte dos parâmetros do método inflar, é usado para herdar um estilo de nível superior. Embora passar nulo possa parecer inofensivo, pode causar sérios problemas ao seu aplicativo posteriormente. Leia mais sobre isso aqui .fonte
aqui está uma imagem para referência
fonte