web-dev-qa-db-ja.com

Android)の文字列配列に文字列を動的に挿入する

サーバーからJSON応答としてデータを受け取ります。必要なデータを抽出し、このデータを文字列配列に入れたいと思います。データのサイズがわからないため、配列を静的として宣言できません。動的文字列配列を宣言します。

String[] xCoords = {};

この後、配列にデータを挿入します。

   for (int i=0; i<jArray.length(); i++) {
         JSONObject json_data = jArray.getJSONObject(i);
         xCoords[i] = json_data.getString("xCoord");
   }

しかし、私は受け取ります

Java.lang.ArrayIndexOutOfBoundsException
Caused by: Java.lang.ArrayIndexOutOfBoundsException

文字列を文字列配列に動的に挿入する方法は何ですか?

8
Stefan Doychev

ArrayListを使用しますが、実際には必要ありませんが、学ぶ

ArrayList<String> stringArrayList = new ArrayList<String>();

   for (int i=0; i<jArray.length(); i++) {
         JSONObject json_data = jArray.getJSONObject(i);
         stringArrayList.add(json_data.getString("xCoord")); //add to arraylist
   }

//if you want your array
String [] stringArray = stringArrayList.toArray(new String[stringArrayList.size()]);
39
Sherif elKhatib

このようにしてみてください

 String stringArray[];        
 stringArray=new String[jArray.length()];
 String xCoords[]=new String[jArray.length()];;

       for (int i=0; i<jArray.length(); i++) {
             JSONObject json_data = jArray.getJSONObject(i);
             xCoords[i] = json_data.getString("xCoord");
       }
6
Rasel

Javaの文字列配列には、宣言時に指定する必要のある定義済みのサイズがあります。要素を追加または削除して後で変更することはできません。動的配列の純粋な概念はJavaに存在しません。-- ここで詳細な記事を読んでください...

これは固定サイズの配列を宣言する正しい方法です。

        String[] myString = new String[5];
        fruits[0]="hello";
        fruits[1]="hello";
        fruits[2]="hello";
        fruits[3]="hello";
        fruits[4]="hello";

代わりに、リストを使用して同様のタスクを実行できます。リストは純粋に動的であり、実行時に複数の値を追加できます。これは、Javaを使用してAndroidでリストを宣言する正しい方法です。

   ArrayList<String> fruits = new ArrayList<String>();
        fruits.add("Value 1");
        fruits.add("Value 2");
        fruits.add("Value 3");
        fruits.add("Value 4");
        fruits.add("Value 5");
        fruits.add("Value 6");
        fruits.add("Value 7");
// add as much values as per requirement
// you can also use loops to add multiple values
0
Zia Muhammad