2016-05-03 9 views
0

私は現在、別のクラスの中のメソッドからArrayListオブジェクトに値を追加しようとしています。あなたはonResponse方法で見れば内部メソッドからArrayListに値を追加するにはどうすればよいですか?

ArrayClass fill = new ArrayClass(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_explore); 
    Response.Listener<String> responseListener4 = new Response.Listener<String>(){ 
     @Override 
     public void onResponse(String response) { 

      try { 
       JSONObject jsonResponse4 = new JSONObject(response); 
       boolean success = jsonResponse4.getBoolean("success"); 
       if (success){ 
        int l; 
        String filled; 
        int length4 = jsonResponse4.length(); 
        for (l=0;l<length4;l++){ 
         filled = jsonResponse4.getString(l+""); 
         fill.add_val(filled); 
        } 
       }else{ 
        AlertDialog.Builder builder = new AlertDialog.Builder(ExploreActivity.this); 
        builder.setMessage("Could not retrieve restaurant tables filled") 
          .setNegativeButton("Retry", null) 
          .create() 
          .show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 
    FilledRequest filledRequest = new FilledRequest(responseListener4); 
    RequestQueue queue4 = Volley.newRequestQueue(ExploreActivity.this); 
    queue4.add(filledRequest); 

:私はArrayListオブジェクトを編集しようと

public class ArrayClass { 

    public static ArrayList<String> array = new ArrayList<>(); 

    public static void add_val(String s){ 
     array.add(s); 
    } 

    public static int get_size(){ 
     return array.size(); 
    } 

    public static String get_val(int i){ 
     return array.get(i); 
    } 
} 

そして、他のクラス:ここ

は私が ArrayListオブジェクトのために作成したクラスです。 jsonResponseの値を ArrayClassオブジェクトに追加しようとする試みを確認することができます。しかし、私は私のアプリを起動すると、オブジェクトに値を追加しません。私はPythonのグローバル変数に慣れていて、Javaのセマンティクスに対処する必要はありません。変更を加える必要があるかどうかを確認することができれば、とても感謝しています。

+0

のような別のArrayListを保存することができますか?あなたはどこかにそれらをロードしますか? – varunkr

+0

@Kayne Khouryそれはうまく動作し、私は自分のコードをチェックしました。あなたの満ちた文字列に問題があるかもしれません。ログを使用して印刷してみてください – Srinivasan

+0

@varunkrアクティビティが開始されたときにオブジェクトの長さをトーストに表示しようとしていましたが、ゼロになるため、値が追加されていないとみなしました。 –

答えて

0

まず、変数が静的であり、メソッドも静的であるため、オブジェクトをインスタンス化する必要はありません。

ArrayClass.add_val("Hello"); 

をしかし、あなたはインスタンス化したい場合、あなたはこれを行うことができます:あなたはこのような何かを行うことができ

public class ArrayClass { 

    private ArrayList<String> array; 

    public ArrayClass() { 
     array = new ArrayList<>(); 
    } 

    public void add_val(String s){ 
     array.add(s); 
    } 

    public int get_size(){ 
     return array.size(); 
    } 

    public String get_val(int i){ 
     return array.get(i); 
    } 
} 

は、値が記入されていることを確認するためにあなたは、このような配列のサイズを確認することができますが:

for (l=0;l<length4;l++){ 
    filled = jsonResponse4.getString(l+""); 
    fill.add_val(filled); 
} 
Log.d("TEST", String.valueOf(fill.get_size()); 
+0

あなたのメソッドは機能しました。値は加算され、値が表示されます。また、私は間違った場所でオブジェクトのサイズをチェックしていました。私は、応答を取り戻してオ​​ブジェクトを埋めるのに時間がかかるとは考えていませんでした。私はすぐにサイズをチェックしていた。助けてくれてありがとう。 –

0

ArrayClassのstaticキーワードのすべてのケースを削除します。静的メソッドは、クラスレベルのメソッドです。クラスのインスタンスではなくクラス自体で呼び出されます。

2

あなたが直面している問題の解決策や解決策は別として、AndroidでJSON解析を実装するための最適かつ最適な方法を共有してください。

GSONまたはJacksonのJavaオブジェクトをJSONに変換して戻すことができるJavaのシリアル化/逆シリアル化を提供するライブラリを確認することをお勧めします。

いくつかの利点がありますが、主な利点の1つは、手動で構文解析を実装する必要がなく、解析の実装で間違いの可能性が低いことです。たとえば、「成功」または「成功"またはそのような愚かな間違い!

0

またArrayListのために、これを試すことができます。

まず、あなたのArrayClassにいくつかの変更を行います。配列にアクセスするには、getおよびSetメソッドを使用します。ArrayListの中

ストアデータ:

あなたはArrayListのはのgetArrayとはsetArray方法と、このようなArrayListのいくつかの事前定義されたメソッドを使用する編集しようと

public class ArrayClass { 
    private ArrayList<String> array = new ArrayList<>(); 
    public ArrayList<String> getArray() { 
     return array; 
    } 
    public void setArray(ArrayList<String> array) { 
     this.array = array; 
    } 

}

そして、あなたの他のクラス

for (l=0;l<length4;l++){ 
     filled = jsonResponse4.getString(l+""); 
     fill.getArray().add(filled); 
    } 

アレイのサイズを取得:

fill.getArray().size(); 

そしてまた、あなたはどのように値が追加されていないことを知っています

ArrayList<String> tempArrayList = new ArrayList<String>(); 
tempArrayList.add("string 1"); 
tempArrayList.add("string 2"); 
tempArrayList.add("string 3"); 
tempArrayList.add("string 4"); 

fill.setArray(tempArrayList) 
関連する問題