Форум программистов, компьютерный форум CyberForum.ru

Парсинг xml Android и открытие при нажатии ListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Запуск приложения из другого приложения http://www.cyberforum.ru/android-dev/thread1026533.html
Привет товарищи! Имеется два приложения. Задача следующая: Из первого приложения запустить второе, да так, что бы второе приложение запустилось по другому сценарию, нежели чем при обычном запуске. Как это можно сделать? Имена пакетов и активи известны.
Программирование Android Drag and Drop Есть ImageView на RelativeLayout, которую собственно нужно "таскать" по этому layout Все сделал и вроде даже работает, за исключением того, что картинка становится не совсем на то место=) public boolean onDrag(View v, DragEvent event) { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); switch... http://www.cyberforum.ru/android-dev/thread1026522.html
Программирование Android Папки
Как сделать чтоб APK создал отдельную папку да ввода\вывода в нее\из нее файлов?
Программирование Android Файлы
Как сделать чтоб созданые файлы можно было помешать в отдельную папку?
Программирование Android Создание файлов с именем которое присвоит пользователь http://www.cyberforum.ru/android-dev/thread1026131.html
Создание файлов с именем которое присвоит пользователь. можно готовый код для вставки?
Программирование Android IntelliJ IDEA 12.1.6 не генерирует R.java Здравствуйте. Внизу очень большой текст. Кратко говоря, у меня не генерируется код в r.java. Если вы храбрый человек, рискните открыть спойлер :) Здравствуйте. Заранее извиняюсь, если этот вопрос уже задавался здесь. Я начинающий программист. Прочитал пару гайдов. Установил всё, что требовалось: Java(JRE,JDK), Android SDK(установил все обновления и даже ненужные для меня пакеты=8-9ГБ),... подробнее

Показать сообщение отдельно
Evgen2sat
19 / 19 / 7
Регистрация: 22.11.2011
Сообщений: 101

Парсинг xml Android и открытие при нажатии ListView - Программирование Android

03.12.2013, 12:11. Просмотров 640. Ответов 0
Метки (Все метки)

Здравствуйте. Нашел пример парсинга xml и вывода в ListView http://androidituts.com/android-xml-parsing-tutorial/
При нажатии на строку ListView должна выводиться информация в новом активити, но вместо этого происходит ошибка и приложение закрывается. Как исправить?
Вот код:
AndroidXMLParsingActivity.class (главный класс)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class AndroidXMLParsingActivity extends ListActivity { 
    static final String URL = "https://api.api2cart.com/v1.0/product.list.xml?api_key=6aed775211e8c3d556db063d12125d2d&store_key=6da0721ca4415c6116c0723777a51162&start=0&count=19&params=id,u_model,name,price,url,short_description"; 
    static final String KEY_ITEM = "product";
    static final String KEY_MODEL = "u_model"; 
    static final String KEY_NAME = "name"; 
    static final String KEY_URL_PRODUCT = "url"; 
    static final String KEY_SHORT_DESCRIPTION = "short_description";
    static final String KEY_PRICE = "price";
    static final String KEY_ID = "id";
 
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_android_xmlparsing); 
        
        
          
        ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
        XMLParser parser = new XMLParser(); 
        String xml = parser.getXmlFromUrl(URL); 
        Document doc = parser.getDomElement(xml); 
        NodeList nl = doc.getElementsByTagName(KEY_ITEM); 
        for (int i = 0; i < nl.getLength(); i++) { 
            HashMap<String, String> map = new HashMap<String, String>(); 
            Element e = (Element) nl.item(i); 
            map.put(KEY_NAME, "Название: " + parser.getValue(e, KEY_NAME));
            map.put(KEY_MODEL, "Модель: " + parser.getValue(e, KEY_MODEL));
            map.put(KEY_PRICE,  "Цена: " + parser.getValue(e, KEY_PRICE) + "руб.");
            map.put(KEY_SHORT_DESCRIPTION, "Описание: " + parser.getValue(e, KEY_SHORT_DESCRIPTION));
            map.put(KEY_URL_PRODUCT, "Ссылка: " + parser.getValue(e, KEY_URL_PRODUCT) + "&product_id=" + parser.getValue(e, KEY_ID));
            
            menuItems.add(map); } 
            ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.list_item, new String[] { KEY_NAME, KEY_MODEL, KEY_PRICE, KEY_SHORT_DESCRIPTION, KEY_URL_PRODUCT }, new int[] { R.id.name, R.id.model, R.id.price, R.id.short_description, R.id.product_url }); 
            setListAdapter(adapter); 
            ListView lv = getListView(); 
            lv.setOnItemClickListener(new OnItemClickListener() { 
                @Override 
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
                    String model = ((TextView) view.findViewById(R.id.model)).getText().toString();
                    String price = ((TextView) view.findViewById(R.id.price)).getText().toString();
                    String url_product = ((TextView) view.findViewById(R.id.product_url)).getText().toString();
                    String short_description = ((TextView) view.findViewById(R.id.short_description)).getText().toString();
                    Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class); 
                    in.putExtra(KEY_NAME, name); 
                    in.putExtra(KEY_MODEL, model); 
                    in.putExtra(KEY_PRICE, price);
                    in.putExtra(KEY_SHORT_DESCRIPTION, short_description); 
                    in.putExtra(KEY_URL_PRODUCT, url_product);
                    startActivity(in); 
 
                }
            });
              
    }
}
SingleMenuItemActivity.class
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class SingleMenuItemActivity extends Activity {
    static final String KEY_MODEL = "u_model"; 
    static final String KEY_NAME = "name"; 
    static final String KEY_URL_PRODUCT = "url"; 
    static final String KEY_SHORT_DESCRIPTION = "short_description";
    static final String KEY_PRICE = "price";
    static final String KEY_ID = "id";
    
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.single_item);
        Intent in = getIntent();
        String name = in.getStringExtra(KEY_NAME); 
        String model = in.getStringExtra(KEY_MODEL);
        String price = in.getStringExtra(KEY_PRICE);
        String short_description = in.getStringExtra(KEY_SHORT_DESCRIPTION);
        String url_product = in.getStringExtra(KEY_URL_PRODUCT); 
        TextView lblName = (TextView) findViewById(R.id.name_label);
        TextView lblModel = (TextView) findViewById(R.id.model_label); 
        TextView lblPrice = (TextView) findViewById(R.id.price_label); 
        TextView lblShort_description = (TextView) findViewById(R.id.short_description_label);
        TextView lblUrl_product = (TextView) findViewById(R.id.url_product_label);
        lblName.setText(name); 
        lblModel.setText(model); 
        lblPrice.setText(price);
        lblShort_description.setText(short_description);
        lblUrl_product.setText(url_product);
    }
 
}
XMLParser.class
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
public class XMLParser {
    public XMLParser() {
        
    }
    public String getXmlFromUrl(String url) { 
        String xml = null;
        try { 
            DefaultHttpClient httpClient = new DefaultHttpClient(); 
            HttpPost httpPost = new HttpPost(url); 
            HttpResponse httpResponse = httpClient.execute(httpPost); 
            HttpEntity httpEntity = httpResponse.getEntity(); 
            xml = EntityUtils.toString(httpEntity);
        }
        catch (UnsupportedEncodingException e) { 
            e.printStackTrace(); 
            } 
        catch (ClientProtocolException e) {
            e.printStackTrace(); 
            } 
        catch (IOException e) { 
            e.printStackTrace(); 
            }
        return xml;
    }
    public Document getDomElement(String xml) { 
        Document doc = null; 
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
        try {
            DocumentBuilder db = dbf.newDocumentBuilder(); 
            InputSource is = new InputSource(); 
            is.setCharacterStream(new StringReader(xml)); 
            doc = db.parse(is); 
            } 
        catch (ParserConfigurationException e) { 
            Log.e("Error: ", e.getMessage()); 
            return null; 
            } 
        catch (SAXException e) { 
            Log.e("Error: ", e.getMessage()); return null; 
            } 
        catch (IOException e) { 
            Log.e("Error: ", e.getMessage());
            return null; 
            } 
        return doc; 
        } 
    
    public final String getElementValue( Node elem ) { 
        Node child; 
        if( elem != null){ 
            if (elem.hasChildNodes()){ 
                for( child = elem.getFirstChild(); 
                        child != null; 
                        child = child.getNextSibling() ){ 
                    if( child.getNodeType() == Node.TEXT_NODE ){
                        return child.getNodeValue(); 
                        } 
                    } 
                } 
            }
        return ""; 
        }
 
    public String getValue(Element item, String str) { 
        NodeList n = item.getElementsByTagName(str);
        return this.getElementValue(n.item(0)); 
        } 
    }
single_item.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView android:id="@+id/name_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textStyle="bold"
        android:paddingTop="10dip"
        android:textColor="#dc6800"/>
    
    <TextView android:id="@+id/model_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#acacac"/>
 
    <TextView android:id="@+id/price_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"/>
    
    <TextView android:id="@+id/short_description_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"/>
    
    <TextView android:id="@+id/url_product_label"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textStyle="bold"/>
</LinearLayout>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru