2010-09-06 3 views
0

Мне нужна небольшая помощь в представлении списка. Я генерирую представление списка, но всякий раз, когда я делаю getChildAt(int position), он генерирует исключение NullPointerException.Android listView: NullPointerException

Вот код

_list=(ListView)findViewById(android.R.id.list); 

_loadListElements(); 

_showListUI(); 

_list.getChildAt(1).setBackgroundColor(Color.WHITE); 
+0

Что говорит logcat? – Bevor

+0

null указатель исключение только после записи строки – viv

+0

разбить код на несколько строк. Таким образом, мы можем видеть, является ли _list нулевым, или если getChildAt (1) возвращает null. – bramp

ответ

1

Если вы не более чем один дочерний элемент, то один, безусловно, даст вам NullPointerException, как вы должны начать отсчет от нуля вверх prgramming. Поэтому вы можете попробовать это.

_list.getChildAt(0).setBackgroundColor(Color.WHITE); 

Но без лишнего кода и выписки из ловушки из стека ошибок трудно сказать.

+0

kkkkkk i will попробуйте вставить несколько деталей из журнала cat, в настоящее время я не на своем рабочем месте. То, что я хотел, - это получить представление о одной строке в представлении списка. Тот же вид, который возвращается при нажатии элемента списка ????? – viv

1

Не зная, какую функциональность вы пытаетесь достичь, я не уверен, что любое из этих предложений будет иметь значение.

Вместо того, чтобы использовать list.getChildAt(), можете ли вы установить цвет фона с помощью метода getView() любого адаптера, который вы используете? У вас будет представление, но я не знаю, есть ли у вас данные, чтобы узнать, какой из них изменить фон.

Из одного из ваших комментариев это звучит так, будто вы хотите получить представление о том, какой элемент списка был просто нажат. Представление «v», представленное в ListActivity.onListItemClick(), похоже, должно быть представление, с которым вы хотите работать.

Надежда одна из этих двух помогает.

+0

Я, я изначально сделал это только в getView(), но не дал желаемых результатов. Он устанавливал фон более чем на несколько строк. Поэтому я подумал о переходе к представлению определенной строки после создания списка. Для ex .. цвет фона 4-й строки списка просмотра после создания списка. Я все еще пытаюсь, если я получу какое-то решение, я опубликую его здесь ..... Спасибо за ответ – viv

0

Понял работает ............. В GetView(), причина, почему он не работал раньше по мне было то, что

Для проверки состояния. .. для ex: if (условие соответствует) изменить цвет;

Это вызывает проблемы, когда список используется для обновления себя ......

Так правильно будет: если (условие) [делать что-то]; else [restore to original]

Это было потому, что у меня не было другого утверждения, которое я получал.

1

Я пробовал когда-либо в OnListItemClickListener(), но терпел неудачу. Наконец, я внес некоторые изменения в свой адаптированный адаптер для listview. Здесь, в getView(), я применяю clickListener к элементу, который я часто добавлял в список. n выполняйте все необходимые функции. Вот мой код, где я добавляю Image View в список n, так что применяйте прослушиватель к просмотру изображения.

getChildAt (i) исключает исключение, поскольку он работает только с видимыми элементами-1. Так что это не сработает.

Думаю, это поможет тем, кто хочет изменить цвет, когда выбран определенный элемент списка. Go Для этого ..

В getView() адаптированного адаптера // ----------------------------- ---- код ------------------------------------------

LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View rowView = inflater.inflate(R.layout.icon_image_layout, parent, false); ImageView imageView = (ImageView) rowView.findViewById(R.id.Icon_ImageView); imageView.setClickable(true); final int pos=position; imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub // TODO Auto-generated method stub try{ if(previous_view!=null) previous_view.setBackgroundColor(Color.WHITE); }catch (Exception e) { System.out.println("Exception Occurs Previous View"); } v.setBackgroundColor(Color.RED); MainActivity.imageView.setImageResource(MainActivity.Image_Name[pos]); previous_view=v; return false; } });
Смежные вопросы