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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Запуск приложения из другого приложения http://www.cyberforum.ru/android-dev/thread1026533.html
Привет товарищи! Имеется два приложения. Задача следующая: Из первого приложения запустить второе, да так, что бы второе приложение запустилось по другому сценарию, нежели чем при обычном запуске....
Программирование Android Drag and Drop Есть ImageView на RelativeLayout, которую собственно нужно "таскать" по этому layout Все сделал и вроде даже работает, за исключением того, что картинка становится не совсем на то место=) ... 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. Если вы храбрый человек, рискните открыть спойлер :) Здравствуйте. Заранее извиняюсь, если этот вопрос... подробнее

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

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

03.12.2013, 12:11. Просмотров 651. Ответов 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>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru