Страница 1 из 1

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

Добавлено: 02 июл 2012, 14:57
nyf-nyf
Всем добрый день.
Знающие люди, подскажите как реализовать следующий механизм.

Что имею:
В 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 для запроса информации о конкретном товаре.

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

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

Добавлено: 02 июл 2012, 15:30
nyf-nyf
Кажется немного разобрался, но все равно хотелось бы услышать дельный совет.
Пока вытаскивать значения правильные получается вот таким способом.

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

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

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

Добавлено: 02 июл 2012, 15:55
KamiSempai
Не понимаю в чем проблема. Есть массив(result) и есть номер элемента массива(position). Мне кажется, тут все четко и ясно.

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

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

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

Добавлено: 30 мар 2013, 21:46
rezak90
Надеюсь понятно описал проблему
нет

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

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

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

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

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

Добавлено: 29 апр 2014, 17:41
Mykola
@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) {