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

Сохранение изменений в xml файл - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Приложение собирающее показания с акселерометра в SQlite базу http://www.cyberforum.ru/android-dev/thread649203.html
Помогите пожалуйста найти ошибку в коде. Когда работаю с проектом вроде всё нормально компилируется, а запускаю .apk файл пишется ошибка "При синтаксическом анализе пакета возникли неполадки"....
Программирование Android Создание приложения для просмотра видео в интернете Всем привет!) С каждым днем операционная система Android становится все популярнее у большого числа людей) Я бы хотел разработать программу для просмотра видео с сайтов через телефон, смартфон,... http://www.cyberforum.ru/android-dev/thread649073.html
ScrollView с динамическими представлениями Программирование Android
Доброго времени суток! Есть scrollview, создаю его в xml. Нужно в нем разместить динамически несколько textview и button. Располагаться они должны в виде текста: tv, bt, tv, bt.... При создании не...
Программирование Android библиотека
Проблема следующая: создал библиотеку, которая содержит в себе некоторую логику и собственные элементы интерфейса. В частности, для одного из графических элементов использовался ViewPager, для чего к...
Программирование Android как определить кол-во свободного места на SD card http://www.cyberforum.ru/android-dev/thread648088.html
Всем Привет! 1. гуглил везде примерно следующее : StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath()); double sdAvailSize = (double)stat.getAvailableBlocks() *...
Программирование Android физика для игры Хотел спросить, проще ли написать свою физику для игры или изучить существующий движок типа And Engine? При использовании And Engine не нужно пользоваться surface view? Допустим вызываю активити где... подробнее

Показать сообщение отдельно
Faustlogger
43 / 35 / 2
Регистрация: 14.09.2011
Сообщений: 158
Записей в блоге: 1
09.09.2012, 23:33  [ТС]
V0v1k, попробовал, не получилось.

Вот мой код.

Файл Main.java. Выполняет обработку событий на форме. При тестировании использовал имя файла shop_items.xml и res\\xml\\shop_items.xml
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
package com.example.test;
 
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
 
public class Main extends Activity {
 
    private ArrayList<Item> iList;
    private DataDocument doc;
    private String FILENAME = "res\\xml\\shop_items.xml";
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);         
        
        doc = new DataDocument(getResources().getXml(R.xml.shop_items));
        
        iList = doc.getItemList();
        
        for(int i = 0; i<iList.size(); i++){
            System.out.println(iList.get(i).getName());
        }
        
        Button buyButton = (Button) findViewById(R.id.button_buy);
        
        buyButton.setOnClickListener(new OnClickListener(){
 
            public void onClick(View v) {
                iList.add(new Item("Nokia 5800","smartphone","320.00",1));
                try {
                    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                    fos.write(doc.writeXML(iList).getBytes());
                    fos.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    Log.e("FileNotFoundException", e.getMessage());
                } catch (IOException ie) {
                    Log.e("IOException", ie.getMessage());
                }
                
            }
            
        });
        
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
Класс Item(Item.java) - хранит в себе данные о товаре.
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
package com.example.test;
 
public class Item {
    private String name;
    private String type;
    private String price;
    private int sum;
    
    public Item(String name, String type, String price, int sum){
        this.setName(name);
        this.setType(type);
        this.setPrice(price);
        this.setSum(sum);
    }
    
    public String getName(){
        return this.name;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getType(){
        return this.type;
    }
    
    public void setType(String type){
        this.type = type;
    }
    
    public String getPrice(){
        return this.price;
    }
    
    public void setPrice(String price){
        this.price = price;
    }
    
    public int getSum(){
        return this.sum;
    }
    
    public void setSum(int sum){
        this.sum = sum;
    }
}
Класс DataDocument.java отвечает за обработку XML.
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
69
70
71
72
73
package com.example.test;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Iterator;
 
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
 
import android.content.Context;
import android.util.Log;
import android.util.Xml;
 
public class DataDocument {
    private XmlPullParser parser;
    
    public DataDocument(XmlPullParser newParser){
        this.setParser(newParser);
    }
    
    public void setParser(XmlPullParser newParser){
        this.parser = newParser;
    }
    
    public ArrayList<Item> getItemList(){
        ArrayList<Item> result = new ArrayList<Item>();
        try{
            while(parser.getEventType()!=XmlPullParser.END_DOCUMENT){
                if(parser.getEventType()==XmlPullParser.START_TAG && parser.getName().equals("item")){
                    result.add(new Item(parser.getAttributeValue(0), parser.getAttributeValue(1), parser.getAttributeValue(2), Integer.parseInt(parser.getAttributeValue(3))));                 
                }  
                parser.next();
            }
        }catch(XmlPullParserException e){
            System.out.println("Error: "+e.getStackTrace());
        } catch (IOException e) {
            System.out.println("Error: Can't parse file");
        }
        return result;
    }
    
    public String writeXML(ArrayList<Item> itemList){
        
        XmlSerializer serializer = Xml.newSerializer();
        StringWriter writer = new StringWriter();
        try{
            serializer.setOutput(writer);
            serializer.startDocument(null, Boolean.valueOf(true));
            serializer.startTag(null, "items");
            
            for(int i = 0; i<itemList.size();i++){
                serializer.startTag(null, "item");
                serializer.attribute(null, "name", itemList.get(i).getName());
                serializer.attribute(null, "type", itemList.get(i).getType());
                serializer.attribute(null, "price", itemList.get(i).getPrice());
                serializer.attribute(null, "sum", String.valueOf(itemList.get(i).getSum()));
                serializer.endTag(null, null);
            }
            
            serializer.endTag(null, "items");
            serializer.endDocument();
            //serializer.flush();
        }catch(Exception e) {
            Log.e("Exception", "Exception occured in wroting");
        }
        return writer.toString();
    }
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.