Передача null для root studio дает мне это предупреждение:
Избегайте передачи значения NULL в качестве корневого представления (необходимо разрешить параметры макета в корневом элементе раздутого макета)
Это показывает нулевое значение в getGroupView
. Пожалуйста помоги.
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)
. Если вы пытаетесь добавить новый вид в существующую ViewGroup, вам, вероятно, следует просто передать родительский элемент и позволить инфлятору присоединить новый вид.onCreateInputView()
дляInputMethodService
.Я нашел хорошую статью о
LayoutInflater
. Автор объясняет, какinflate
работают все версии метода, и приводит примерыListView
иAlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Обновление № 1.
Этот ответ недавно мне тоже помог. https://stackoverflow.com/a/5027921/1065835
источник
Здесь по какой-то причине использование View.inflate вместо раздувания из layoutinflater приводит к исчезновению ошибки lint. Думаю, что я опубликую это здесь, так как эта тема находится в верхней части поиска Google ...
источник
Когда у вас действительно нет ничего
parent
(например, создается представление дляAlertDialog
), у вас нет другого пути, кроме как пройтиnull
. Так что сделайте это, чтобы избежать предупреждения:источник
ViewGroup root = (ViewGroup) myActivity.findViewById(R.id.my_main_content);
гдеmy_main_content
id самого внешнего контейнера в файле макета моей деятельности.@SuppressLint("InflateParams")
выше свой метод.Для
AlertDialog
кода ниже может быть использованисточник
Хорошую информацию я нашел, когда искал способ решить эту проблему. По словам Дэйва Смита,
Здесь
ViewGroup
было запрошено, поскольку часть параметров метода inflate используется для наследования стилей более высокого уровня. Если передача значения null может показаться безвредной, это может в дальнейшем вызвать серьезные проблемы для вашего приложения. Подробнее об этом читайте здесь .источник
вот картинка для справки
источник