2012-05-09 7 views
0

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

Im фактически пытается добавить заголовок к активности списка. Для этого мой код:

View header= (View)getLayoutInflater().inflate(R.layout.customheader, null); 
getListView.addHeaderView(header); 
header.getLayoutParams().height=(int)55; //This line is throwing a null pointer exception 
setListAdapter(adapter); 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    LayoutParams params=new LayoutParams(-1, 55); 
    View header= (View)getLayoutInflater().inflate(R.layout.customheader, null); 
    getListView().addHeaderView(header); 
    getListView().setCacheColorHint(0); 
    getListView().setBackgroundResource(R.drawable.patterns); 
    setListAdapter(new Settingsadapter(this, menu)); 
    header.setLayoutParams(params); 
} 

Исключение: E/AndroidRuntime (504): java.lang.ClassCastException: android.view.ViewGroup $ LayoutParams

+0

Не забудьте отметить ответ, он поможет другим. – Signcodeindie

ответ

1

Вы надувать свой вид, но не добавлять его в любом месте. Чтобы установить высоту, представление должно быть в приложении.

Если вы пытаетесь retrive часть вашего существующего макета, вам нужно сделать, это:

View header = (View)findViewById(R.layout.customheader); 
header.getLayoutParams().height=55; 
+0

oh хорошо. я пытался добавить заголовок в представление списка, используя существующий файл макета, который я использую в других действиях, а также – Ash

1

убедитесь в Уре customheader, высоту как 0 или некоторые значения не входят wrapcontent, fillparent, matchparent значения ...

LayoutParams params = new LayoutParams(urWidth, 55); 
    View header= (View)getLayoutInflater().inflate(R.layout.customheader, null); 

    header.setLayoutParams(params); 
+0

Я отредактировал свою программу, но im получаю classCastException с этим кодом – Ash

0

Если вы добавляете его в ListView в качестве заголовка, вы будете нуждаться в LayoutParams быть AbsListView.LayoutParams

AbsListView.LayoutParams params = new AbsListView.LayoutParams(urWidth, 55); 
View header= (View)getLayoutInflater().inflate(R.layout.customheader, null); 
header.setLayoutParams(params); 
listView.addHeader(header); 
Смежные вопросы