Почему добавление представления заголовка в просмотр списка приводит к сбою приложения? - PullRequest
0 голосов
/ 15 сентября 2011
    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);

Запуск этого вызывает сбой программы.Если я возьму "lv.addHeaderView (t)", он работает нормально, почему?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

addHeaderView должен вызываться перед setAdapter. В противном случае вы получите исключение IllegalStateException.

См. http://developer.android.com/reference/android/widget/ListView.html#addHeaderView%28android.view.View%29

Ваш новый код должен быть:

  </p>

<pre><code>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);

0 голосов
/ 15 сентября 2011

Я думаю, это потому, что ваши текстовые размеры не установлены. Попробуйте сделать это

TextView t = new TextView(this);
t.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,
                                             LayoutParams.FILL_PARENT));
t.setText("asdfadsfdfsa");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...