Доступ к элементам ListView

Интерфейс, диалоги, темы, стили, меню
Ответить
dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Доступ к элементам ListView

Сообщение dimky » 04 июн 2013, 20:50

Привествую всех.

Возникла у мена такая трудность значит. Есть ListView, есть xml с тестовыми вопросами и ответами.
Адаптером заполняю ListView этими данными используя отдельный лейаут.

Все это делается таким кодом:

Код: Выделить всё

ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();

        Document doc = ParseXMLMethods.XMLfromString(questions_raw);
            
		NodeList children = doc.getElementsByTagName("question");
					
		for (int i = 0; i < children.getLength(); i++)
		{							
			HashMap<String, String> map = new HashMap<String, String>();	
			Element e = (Element)children.item(i);
        	map.put("title", ParseXMLMethods.getValue(e, "title"));
        	map.put("answer_1", ParseXMLMethods.getValue(e, "answer_1"));
        	map.put("answer_2", ParseXMLMethods.getValue(e, "answer_2"));
        	map.put("answer_3", ParseXMLMethods.getValue(e, "answer_3"));
        	mylist.add(map);			
		}		
       
        ListAdapter adapter = new SimpleAdapter(ctx, mylist , R.layout.answers_layout, 
                        new String[] { "title", "answer_1", "answer_2",  "answer_3"}, 
                        new int[] { R.id.title, R.id.answer_1, R.id.answer_2, R.id.answer_3});
        
        mod_list.setAdapter(adapter);
Внимание, вопрос: как обратится скажем к TextView с id answer_1 в 5ом элементе ListView для последующих манипуляций?

Пробую так, не работает:

Код: Выделить всё

        View v = mod_list.getChildAt(5);
        TextView element = (TextView) v.findViewById(R.id.answer_1);
        element.setText("test");

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Доступ к элементам ListView

Сообщение Foenix » 04 июн 2013, 21:33

кастомный адаптер писать нужно, а в нем, в методе bindView делать что угодно по любым условиям, хоть текст менять, хоть шрифты, хоть цвета.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 04 июн 2013, 21:43

А попроще никак? :) Не дорос я пока еще до кастомных адаптеров.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Доступ к элементам ListView

Сообщение Foenix » 04 июн 2013, 22:41

поверьте, это просто
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 05 июн 2013, 10:10

Чтож, раз так, буду изучать вопрос. За наводку спасибо. :)

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 05 июн 2013, 16:49

Разбираюсь тут с ViewBinder'ом значит и возник такой затык внутри setViewValue:
((TextView) view).setBackgroundColor(Color.parseColor("#ff0000")); - закрашивает все поле в красный, текст пропадает.
или
((TextView) view).setTextColor(Color.parseColor("#ff0000")); - текст просто пропадает.

Что я делаю не так?

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 06 июн 2013, 20:06

Ребят, ну в чем дело, нет идей? Почему при установке каких либо параметров TextView, сам текст из него пропадает?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Доступ к элементам ListView

Сообщение rezak90 » 06 июн 2013, 23:49

попробуйте цвет текста указывать из восьми знаков а не из шести
R.id.team
Политика на форуме запрещена

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Доступ к элементам ListView

Сообщение klblk » 07 июн 2013, 05:22

еще цвета можно прописать в values/colors.xml, и уже оттуда получал к ним доступ (R.color.my_color)

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 07 июн 2013, 10:41

В общем я запутал себя и всех остальных... Дело оказывается не в установке цвета, что-то с самим ViewBinder'ом.

Так он выглядит:

Код: Выделить всё

	class MyViewBinder implements SimpleAdapter.ViewBinder
	{
		@Override
	    public boolean setViewValue(View view, Object data, String textRepresentation)
	    {
	      switch (view.getId())
	      {
		      // LinearLayout
		  		case R.id.answer_1:	  			
		  			((TextView) view).setTextColor(Color.RED);		  			
		        return true;
	      }
	      return false;
	    }
	  }	
В общем не важно что будет в случае если ID равен R.id.answer_1, текст пропадает в любом случе, даже если в кейсе ничего не будет.

dimky
Сообщения: 29
Зарегистрирован: 27 май 2013, 14:51

Re: Доступ к элементам ListView

Сообщение dimky » 07 июн 2013, 12:50

Все, разобрался. Сдесь в уроке: http://startandroid.ru/ru/uroki/vse-uro ... viewbinder в примере кода после описания кейса стоит return true;
После замены return true на break все заработало.

Ответить