Why does adding a header view to listview make the app crash?
开发者_如何学C super.onCreate(savedInstanceState);
ListView lv = new ListView(this);
String[] meals = getResources().getStringArray(R.array.meals);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item,
meals));
lv.setTextFilterEnabled(true);
college = getIntent().getExtras().getString("COLLEGE");
setTitle(college);
TextView t = new TextView(this);
t.setText("asdfadsfdfsa");
lv.addHeaderView(t);
setContentView(lv);
Running this causes the program to crash. If i take out the "lv.addHeaderView(t)", it runs fine, why?
addHeaderView should be called before setAdapter. Otherwise you will get an IllegalStateException.
Refer http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29
Your new code should be:
super.onCreate(savedInstanceState);
ListView lv = new ListView(this);
String[] meals = getResources().getStringArray(R.array.meals);
TextView t = new TextView(this);
t.setText("asdfadsfdfsa");
lv.addHeaderView(t);
lv.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, meals));
lv.setTextFilterEnabled(true);
college = getIntent().getExtras().getString("COLLEGE");
setTitle(college);
setContentView(lv);
I think thats because your textview dimensions are not set. Try doing this
TextView t = new TextView(this);
t.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.FILL_PARENT));
t.setText("asdfadsfdfsa");
精彩评论