[英]How can I add a value to an ArrayList from an inner method?
我目前正在嘗試從另一個類內部的方法向ArrayList
對象添加值。
這是我為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
對象的另一個類:
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);
如果查看onResponse
方法,則可以看到嘗試將jsonResponse
的值添加到ArrayClass
對象中的ArrayClass
。 但是,當我啟動應用程序時,它不會將值添加到對象中。 我習慣於使用python全局變量,而不必處理java的語義,因此,如果您可以對需要進行哪些更改有所了解,我將不勝感激。
首先,由於您的變量是靜態的,並且方法也是靜態的,因此您不必實例化該對象。 您可以執行以下操作:
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());
刪除ArrayClass中所有static關鍵字的情況。 靜態方法是類級別的方法,即。 是在類本身而不是類的實例上調用的。
您也可以嘗試使用ArrayList:
首先在ArrayClass中進行一些更改。 使用get And Set方法訪問數組。
public class ArrayClass {
private ArrayList<String> array = new ArrayList<>();
public ArrayList<String> getArray() {
return array;
}
public void setArray(ArrayList<String> array) {
this.array = array;
}
}
您嘗試編輯ArrayList的其他類使用getArray和SetArray方法以及ArrayList的一些預定義方法,如下所示:
將數據存儲在ArrayList中:
for (l=0;l<length4;l++){
filled = jsonResponse4.getString(l+"");
fill.getArray().add(filled);
}
獲取ArrayList的大小:
fill.getArray().size();
而且您還可以存儲另一個ArrayList
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.