如何获取Arraylist数据并保存到Android中的String中

时间:2017-04-17 15:21:21

标签: java android arraylist

我想将服务器中的数据加载到数组中。 我的json是: 我想从服务器加载数据到数组。 我的json是:

{
    "mapmarkers": {
        "markers":[{
            "lat": 35.651005,
            "long": 51.325113,
            "title": "Ł…Ł†Ų·Ł‚Ł‡ 1",
            "snippet": "ŲŖŁŲ¶ŪŲ­Ų§ŲŖ Ł…Ų±ŲØŁŲ· ŲØŁ‡ Ł…Ł†Ų·Ł‚Ł‡ 1"
        },{
            "lat": 35.651964,
            "long": 51.324984,
            "title": "Ł…Ł†Ų·Ł‚Ł‡ 2",
            "snippet": "ŲŖŁŲ¶ŪŲ­Ų§ŲŖ 2"
        },{
            "lat": 35.649521,
            "long": 51.327027,
            "title": "Ł…Ł†Ų·Ł‚Ł‡ 3",
            "snippet": "ŲŖŁŲ¶ŪŲ­Ų§ŲŖ 3"
        },{
            "lat": 35.649799,
            "long": 51.325620,
            "title": "Ł…Ł†Ų·Ł‚Ł‡ 4",
            "snippet": "ŲŖŁŲ¶ŪŲ­Ų§ŲŖ 4"
        },{
            "lat": 35.650235,
            "long": 51.324697,
            "title": "Ł…Ł†Ų·Ł‚Ł‡ 5",
            "snippet": "ŲŖŁŲ¶ŪŲ­Ų§ŲŖ 5"
        }
}

使用此代码,我从服务器获取数据并设置为arrayList:

private ArrayList<Markerinfo> model = new ArrayList<Markerinfo>();

public void initRequest() {
    APIinterface api = APIrequest.getCient().create(APIinterface.class);
    Call<Mapmarkers> call = api.getMarkerResponse();
    call.enqueue(new Callback<Mapmarkers>() {
        @Override
        public void onResponse(Call<Mapmarkers> call, Response<Mapmarkers> response) {
            if (response.body() != null) {
                model.addAll(response.body().getMarkers());
                for (int i = 0; i < model.size(); i++) {
                    createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet());
                    LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong());
                    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
                }
            }
        }

        @Override
        public void onFailure(Call<Mapmarkers> call, Throwable t) {
        }
    });
}

例如,我想在lat下面保存并输入 String address3;

"lat": 35.649521,
        "long": 51.327027,

怎么可能?

2 个答案:

答案 0 :(得分:0)

试试这个:将Double值转换为字符串并添加它们。

 String address; //declare outside

for (int i = 0; i < model.size(); i++) {
                if(i == 2) { //third item
                    address = String.valueOf(model.get(i).getLat()) + String.valueOf( model.get(i).getLong());
                    }
                    createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet());
                    LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong());
                    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17));
                }

修改

对于特定物品位置使用:

#ifndef DATA_H
#define DATA_H

#include <string>
#include <vector>

#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>

namespace ml {
    class Data {
        private:
            std::vector<float> d;

            friend class boost::serialization::access;

            template<class Archive>
            void serialize(Archive& ar, const unsigned int version);
        public:

            static Data Load(const std::string& filename);

            Data(const std::vector<float>& d);

            Data(const Data& rhs);
            Data();

            ~Data();

            Data& operator=(const Data& rhs);

            void save(const std::string& filename);

            std::vector<float> getD() const;
    };
}
#endif // DATA_H 

答案 1 :(得分:0)

使用字符串func stripCtlAndExtFromBytes(str string) string { b := make([]byte, len(str)) var bl int for i := 0; i < len(str); i++ { c := str[i] if c >= 32 && c < 127 { b[bl] = c bl++ } } return string(b[:bl]) } 存储所有ArrayList的所有addresses

试试这个:

Markerinfo

根据您的需要稍后使用private ArrayList<Markerinfo> model = new ArrayList<Markerinfo>(); private ArrayList<String> addressList= new ArrayList<String>(); public void initRequest() { APIinterface api = APIrequest.getCient().create(APIinterface.class); Call<Mapmarkers> call = api.getMarkerResponse(); call.enqueue(new Callback<Mapmarkers>() { @Override public void onResponse(Call<Mapmarkers> call, Response<Mapmarkers> response) { if (response.body() != null) { model.addAll(response.body().getMarkers()); for (int i = 0; i < model.size(); i++) { // Add address to list addressList.add(String.valueOf(model.get(i).getLat()) + ", " + String.valueOf( model.get(i).getLong())); createMarker(model.get(i).getLat(), model.get(i).getLong(), model.get(i).getTitle(), model.get(i).getSnippet()); LatLng latLng = new LatLng(model.get(i).getLat(), model.get(i).getLong()); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 17)); } } } @Override public void onFailure(Call<Mapmarkers> call, Throwable t) { } }); } 值。

addressList

希望这会有所帮助〜