Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList未初始化_Java_Android_Arrays_Arraylist - Fatal编程技术网

Java ArrayList未初始化

Java ArrayList未初始化,java,android,arrays,arraylist,Java,Android,Arrays,Arraylist,我只是在做一些学习,不明白为什么这个ArrayList是初始化的,但不能在其内部填充的方法之外使用。有人能解释一下吗?先谢谢你 例如,如果我在方法中询问ArrayList.size(),它表明它已初始化,但在方法之外的其他地方则不会 package com.purewowstudio.animations; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util

我只是在做一些学习,不明白为什么这个ArrayList是初始化的,但不能在其内部填充的方法之外使用。有人能解释一下吗?先谢谢你

例如,如果我在方法中询问ArrayList.size(),它表明它已初始化,但在方法之外的其他地方则不会

package com.purewowstudio.animations;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.GsonBuilder;
import com.purewowstudio.animations.extras.CustomGrid;
import com.purewowstudio.animations.models.ActorArray;
import com.purewowstudio.animations.models.ActorObject;

import java.util.ArrayList;

public class ActorList extends ActionBarActivity {

String LOG_TAG = ActorList.class.getSimpleName();
private ArrayList<ActorObject> actorObjectArrayList;
ActorArray actorArray;
GridView actorGrid;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.actors_list);
    getActors();

    if (actorObjectArrayList != null) {
        ActorObject[] actors = actorObjectArrayList.toArray(new ActorObject[actorObjectArrayList.size()]);

        String actorsNames[] = new String[actorObjectArrayList.size()];
        String actorsImages[] = new String[actorObjectArrayList.size()];

        for (int i = 0; i < actorObjectArrayList.size(); i++) {
            actorsNames[i] = actors[i].getName();
            actorsImages[i] = actors[i].getImage();
        }

        CustomGrid adapter = new CustomGrid(ActorList.this, actorsNames, actorsImages);
        actorGrid = (GridView) findViewById(R.id.grid);
        actorGrid.setAdapter(adapter);
        actorGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                //Toast.makeText(ActorList.this, "You Clicked at " + actorsNames[+position], Toast.LENGTH_SHORT).show();
            }
        });
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.animation_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

private void getActors(){
    String url ="http://microblogging.wingnity.com/JSONParsingTutorial/jsonActors";
    RequestQueue queue = Volley.newRequestQueue(this);

    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    actorArray = new GsonBuilder().create().fromJson(response, ActorArray.class);
                    actorObjectArrayList = actorArray.getActors();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // TODO Auto-generated method stub
            Log.v(LOG_TAG, "Volley Error");
        }
    });
    queue.add(stringRequest);
}

}
package com.purewowstudio.animations;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.GridView;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.StringRequest;
导入com.android.volley.toolbox.volley;
导入com.google.gson.GsonBuilder;
导入com.purewowstudio.animations.extras.CustomGrid;
导入com.purewowstudio.animations.models.ActorArray;
导入com.purewowstudio.animations.models.ActorObject;
导入java.util.ArrayList;
公共类ActorList扩展了ActionBarActivity{
字符串LOG_TAG=ActorList.class.getSimpleName();
私有ArrayList actorObjectArrayList;
阿克特拉雷;
网格视图actorGrid;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.actors\u列表);
getActors();
if(actorObjectArrayList!=null){
ActorObject[]actors=actorObjectArrayList.toArray(新的actorObjectArrayList.size());
String actorsNames[]=新字符串[actorObjectArrayList.size()];
String ActorImage[]=新字符串[actorObjectArrayList.size()];
对于(int i=0;i
在其他方法中无法访问用于初始化arraylist的内容的原因很简单。它是OnCreate范围内的本地数据。您应该定义类的构造函数并在那里初始化arraylist。然后在方法中,可以添加需要添加的数据。当您在arraylist中查找数据时,它将包含您要查找的所有内容。

在其他方法中无法访问用于初始化arraylist的内容的原因很简单。它是OnCreate范围内的本地数据。您应该定义类的构造函数并在那里初始化arraylist。然后在方法中,可以添加需要添加的数据。当您在arraylist中查找数据时,它将包含您要查找的所有数据。

如果它是方法的本地数据,那么它就是方法的本地数据,这就是Java的工作方式(我认为是大多数语言)。您的
getActors
方法是异步的。当您调用
actorObjectArrayList!=null
,它还没有初始化,因为
public void onResponse(String response)
将来会被调用。我想可能是这样的,所以我把onCreate中的所有内容都添加到它自己的方法中,然后我要求该方法在10秒内启动,仍然不起作用?截击的时间是什么样的(我第一次这样做)。我知道服务器响应将有一个延迟。您可以设置一个超时吗?在此之后,如果您的数据结构中没有数据,您只需再次调用getActors或停止流,因为arraylist为空?我现在将尝试此操作。仅出于学习目的,您下面提供的答案现在适合这种情况吗?如果它是方法的局部,那么它就是方法的局部,这就是Java的工作方式(我认为是大多数语言)。您的
getActors
方法是异步的。当您调用
actorObjectArrayList!=null
,它还没有初始化,因为
public void onResponse(String response)
将来会被调用。我想可能是这样的,所以我把onCreate中的所有内容都添加到它自己的方法中,然后我要求该方法在10秒内启动,仍然不起作用?截击的时间是什么样的(我第一次工作时)