开发者

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");
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜