Как прочитать более одного объекта из файла в Android - PullRequest
0 голосов
/ 08 сентября 2011

У меня проблема. Я работаю над некоторым приложением и хочу, чтобы пользователь запомнил свои любимые магазины. Я хотел сделать это с помощью файла, который он создал на своем телефоне и куда он добавил объект магазина. Я пробовал что-то вроде этого:

favorites.setAddress(listPlace.get(0).get("address"));
            favorites.setId(String.valueOf(id));
            favorites.setName(imeRestorana);            
            myFavorites.add(favorites);
            String FILENAME = "myFavorites";
            try {
                FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(myFavorites);
                oos.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

А потом я прочитаю это из файла, подобного этому, и вставлю его в список:

String FILENAME = "myFavorites";
                ArrayList<Favorites> myF = new ArrayList<Favorites>();
                try {
                    FileInputStream fis = openFileInput(FILENAME);
                    ObjectInputStream ois = new  ObjectInputStream(fis);                    
                    myF = (ArrayList<Favorites>) ois.readObject();
                    ois.close();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }           
                myFavorites = new ArrayList<HashMap<String,String>>();
                for(int i = 0; i<myF.size(); i++){
                    HashMap<String, String> map = new HashMap<String, String>();
                    map.put("Ime", myF.get(0).getName());
                    map.put("Adresa", myF.get(0).getAddress());
                    map.put("ID", myF.get(0).getId());
                    map.put("Latitude", myF.get(0).getLatitude());
                    map.put("Longitude", myF.get(0).getLongitude());
                    myFavorites.add(map);
                }

                ListAdapter adapter = new SimpleAdapter(this, myFavorites, R.layout.listviewfavoriti, new String[]{"Ime","Adresa"},
                        new int[]{R.id.textViewFavoritiNaziv, R.id.textViewFavoritiAdresa});
                listView.setAdapter(adapter);

Моя проблема в том, что он показывает только 1 магазин ... потому что он читает только первый объект ... Как я могу изменить это ????

...