1

我正在做学校作业,需要一些帮助。

Android 我将这些坐标存储在 sdcard 的 txt 文件中,它们以这种方式存储

x.xxxxxxxx|x.xxxxxxxxxy
x.xxxxxxxx|x.xxxxxxxxxx

等等。我正在做的是尝试使用 listview.onclicklistener(){,所以一旦我点击一个文件,它就会读取它并向带有数据的地图发送一个意图。我想要的是将它存储在两个不同的数组中,例如同一文件中的经度 [] 和纬度 [],以发送到 map.class 以用作创建标记的参数。我知道如何拆分它,但我不知道如何将它们存储到单独的数组中。

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            File logFile = new File(Environment.getExternalStorageDirectory().toString(), "GPSLogger/testfile.txt");
            InputStream instream = null;
            try {
                instream = new FileInputStream(logFile);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
            String line = null;
            String[] Location = null;
            int i = 0;
            String[] Longitude = null;
            String[] Latitude = null;

            try {
                while((line = reader.readLine()) != null){
                    Log.v("result" ,result);
                    result += line + "|";

                    Location = result.split("\\|");
                    for (String s : Location) {
                        Log.v("asd",s);
                        i++;
                        if(i%2==0){
                            String[] Longitude = Location[0];

                        }
                        else{
                            String Latitude = Location[0];
                        }
                    }

这就是我正在尝试的,但我遇到了很多错误。请提前帮助和感谢!

4

2 回答 2

1

If file looks like you mentioned in question try this:

String longtitudeLine = reader.readLine();
String latitudeLine = reader.readLine();
String[] longtitudeCoordinates = longtitudeLine != null ? longtitudeLine.split("\\|") : null; //Array will be null if line is empty
String[] latitudeCoordinates = latitudeLine != null ? latitudeLine.split("\\|") : null; // Array will be null if line is empty

Note: this will work in case you sure that first two lines is coordinates.

于 2013-01-22T15:01:46.503 回答
1

您的问题是您必须在输入数组之前实例化数组(尤其是纬度和经度),但在实例化它们之前您必须知道数组的大小。只有读完这条线,你才会知道这个尺寸......

这是一个两难境地。

幸运的是,有不止一种方法可以做到这一点。

例如,您可以执行您尝试的操作:填充(大)字符串中的所有行,然后填充数组。

 BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
        String line = null;
        String[] location = null;
        String longitude = null;
        String latitude = null;
        StringBuffer buffer = new StringBuffer();


        while((line = reader.readLine()) != null) {
                Log.v("result" ,result);
                buffer.append(line).append("|");
            }
        location = buffer.toString().split("\\|");
        // Compute the size of the list
                    // There's an odd number of elements because of the
                    // last trailing '|'
        int size = (location.length - 1) / 2;
        longitude = new String[size];
        latitude = new String[size];
        for (int i=0; i<size;i++) {
            longitude[i]=location[i*2];
            latitude[i]=location[i*2+1];
            }

您还可以使用“动态”大小的对象,例如ArrayList<String>,当您事先不知道长度时,您可以使用它来存储值数组......

于 2013-01-22T15:12:02.303 回答