Выцепить значения из ListView

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
nyf-nyf
Сообщения: 2
Зарегистрирован: 02 июл 2012, 14:41

Выцепить значения из ListView

Сообщение nyf-nyf » 02 июл 2012, 14:57

Всем добрый день.
Знающие люди, подскажите как реализовать следующий механизм.

Что имею:
В ListView загружается распарсеная инфа со страницы сайта.
Ячейка списка разбита на 3 TextView "Название, Описание, Цена".

Через SimpleAdapter я заполняю список.

Задача: При нажатии на пункт списка нужно открывать новое активити, в котором будет загружаться инфа с сайта get запросом. (В запросе надо передать id товара).
Собственно id товара надо добавить как "скрытый" атрибут списка, чтобы потом его можно было получить при нажатии.
Через map<String, Object> добавить поле id каждому значению как вариант? Но вот как этот id потом вытащить вот тут...

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

listView.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {
}
Или же как можно свои айди задать элементам списка, которые достаются через getId() ?


Вот код

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

          SimpleAdapter adapter = new SimpleAdapter(Number1Activity.this, 
                  result, 
                  R.layout.listres, new String[]{ 
                  TITLE,         
                  DESC,
                  PRICE, 
                  }, new int[]{    
                  R.id.search_list_title,      
                  R.id.search_list_desc,
                  R.id.search_list_price});    
          listView.setAdapter(adapter);                         
          listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
          Content.setText("");

          listView.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView<?> parent, View view,
                  int position, long id) {

              }
            });
А так же как заполняется ArrayList

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

private ArrayList<HashMap<String, Object>> parseResults(String res)
        {
        	String items[] = new String[100];
        	
            ArrayList<HashMap<String, Object>> tovar = new ArrayList<HashMap<String,Object>>();
            HashMap<String, Object> hm;                             
        	final Pattern itempattern = Pattern.compile("<item>(.*?)</item>");
        	final Pattern namepattern = Pattern.compile("<name>(.*)</name>");
        	final Pattern descpattern = Pattern.compile("<desc>(.*)</desc>");
        	final Pattern pricepattern = Pattern.compile("<postavka>(.*)</postavka>");
                Matcher itemmatcher = itempattern.matcher(res);

                int i = 0;
                int c = 0;
                while (itemmatcher.find())
                {	

                	items[c] = itemmatcher.group(1);
                	c++;
                }             
                if (c == 0) return null;
                
                
                
                for (i=0;i<c;i++)
                {
                	Log.d("TEST", items[i]);
	                Matcher namematcher = namepattern.matcher(items[i]);
	                Matcher descmatcher = descpattern.matcher(items[i]);
	                Matcher pricematcher = pricepattern.matcher(items[i]);
	                hm = new HashMap<String, Object>();
	            	if (namematcher.find())
	            	{
						hm.put(TITLE, namematcher.group(1));
						Log.d("TITLE", namematcher.group(1));
	            	}
	            	
	            	if (descmatcher.find())
	            	{
	            		hm.put(DESC, descmatcher.group(1));   
	            		Log.d("DESC", descmatcher.group(1));
	            	}
	            	
	            	if (pricematcher.find())
	            	{
	            		hm.put(PRICE, pricematcher.group(1));  
	            		Log.d("PRICE", pricematcher.group(1));
	            	}
	            	tovar.add(hm);
	            	
                }
                
          
                
			return tovar;
        }
id товаров хранятся в mysql базе основного сайта. Собственно эти id будут передаваться в Activity для запроса информации о конкретном товаре.

Если нужно - скину код целого активити.

nyf-nyf
Сообщения: 2
Зарегистрирован: 02 июл 2012, 14:41

Re: Выцепить значения из ListView

Сообщение nyf-nyf » 02 июл 2012, 15:30

Кажется немного разобрался, но все равно хотелось бы услышать дельный совет.
Пока вытаскивать значения правильные получается вот таким способом.

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

String str = ((TextView) view.findViewById(R.id.search_list_title)).getText().toString();
Log.d("SS", str);
Но это я вытаскиваю значение из View. А так как id в View не будет, то как его вытащить пока не понимаю :/ (либо его делать невидимым в каждом элементе списка?)

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Выцепить значения из ListView

Сообщение KamiSempai » 02 июл 2012, 15:55

Не понимаю в чем проблема. Есть массив(result) и есть номер элемента массива(position). Мне кажется, тут все четко и ясно.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

heylonbob2
Сообщения: 3
Зарегистрирован: 30 мар 2013, 18:49

Re: Выцепить значения из ListView

Сообщение heylonbob2 » 30 мар 2013, 19:03

Здравствуйте. Не совсем понимаю подходит ли мне то,что выше. Но спрошу. Как вернуть ссылку после парсинга из которой заполняется какая либо ячейка ListView. Надеюсь понятно описал проблему. Заранее спасибо. Надеюсь на помощь)

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

Re: Выцепить значения из ListView

Сообщение rezak90 » 30 мар 2013, 21:46

Надеюсь понятно описал проблему
нет
R.id.team
Политика на форуме запрещена

heylonbob2
Сообщения: 3
Зарегистрирован: 30 мар 2013, 18:49

Re: Выцепить значения из ListView

Сообщение heylonbob2 » 31 мар 2013, 02:17

rezak90 писал(а):
Надеюсь понятно описал проблему
нет
Извиняюсь. Вообщем распарсил сайт с помощью jsoup, вывел то, что получил в listview, предположим это он лайн справочник по организациям города. К примеру в ячейке listview получилось "банки" и по нажатию на эту ячейку нужно перейти к списку банков. Вот собственноу как вернуть ссылку из которой была заполнена эта ячейка. Метод getItem возвращает "банки". Надеюсь так лучше.

skull
Сообщения: 48
Зарегистрирован: 22 апр 2014, 15:49

Re: Выцепить значения из ListView

Сообщение skull » 29 апр 2014, 14:18

nyf-nyf писал(а):.
Не разобрался ? У меня точно такой же вопрос возник :)

Mykola
Сообщения: 132
Зарегистрирован: 26 июл 2013, 12:06

Re: Выцепить значения из ListView

Сообщение Mykola » 29 апр 2014, 17:41

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return super.getItemId(position);
}
у адаптера переопределить не побывали?
public void onItemClick(AdapterView<?> parent, View view,
int position, long id-это будет результат метода getItemId) {

Ответить