Melewati nol untuk root studio memberi saya peringatan ini:
Hindari melewatkan null sebagai view root (harus menyelesaikan parameter tata letak pada elemen root tata letak yang meningkat)
Ini menunjukkan nilai null dalam getGroupView
. Tolong bantu.
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)
. Jika Anda mencoba untuk menambahkan tampilan baru ke ViewGroup yang ada, Anda mungkin harus melewati orang tua dan membiarkan inflater melampirkan tampilan baru.onCreateInputView()
untukInputMethodService
.Saya menemukan artikel yang bagus tentang
LayoutInflater
. Penulis menjelaskan bagaimana semua versiinflate
metode bekerja dan memberikan contohListView
danAlertDialog
http://www.doubleencore.com/2013/05/layout-inflation-as-intended/
Perbarui # 1.
Jawaban ini baru-baru ini membantu saya juga. https://stackoverflow.com/a/5027921/1065835
sumber
Ini dia, untuk beberapa alasan menggunakan View.inflate alih-alih menggembung dari layoutinflater membuat kesalahan serat menghilang. Kupikir aku akan memposting ini di sini karena utas ini ada di bagian atas Google Search ...
sumber
Ketika Anda benar-benar tidak memiliki
parent
(misalnya membuat tampilan untukAlertDialog
), Anda tidak memiliki cara lain selain melewatinull
. Jadi lakukan ini untuk menghindari peringatan:sumber
ViewGroup root = (ViewGroup) myActivity.findViewById(R.id.my_main_content);
manamy_main_content
id wadah terluar dalam file tata letak aktivitas saya.@SuppressLint("InflateParams")
metode Anda di atas.Untuk
AlertDialog
kode di bawah ini dapat digunakansumber
Informasi bagus yang saya temukan saat mencari cara untuk menyelesaikan ini. Menurut Dave Smith,
Yang
ViewGroup
diminta di sini sebagai bagian dari parameter metode mengembang digunakan untuk mewarisi styling tingkat yang lebih tinggi. Meskipun melewati nol bisa tampak tidak berbahaya, itu sebenarnya dapat menyebabkan masalah serius untuk aplikasi Anda nanti. Baca lebih lanjut tentang ini di sini .sumber
di sini adalah gambar untuk referensi
sumber