Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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_Api_Android Intent_Arraylist - Fatal编程技术网

Java 未在Arraylist中添加项

Java 未在Arraylist中添加项,java,android,api,android-intent,arraylist,Java,Android,Api,Android Intent,Arraylist,这就是我试图将“ID”从api添加到arraylist的方式 int id; private List<HashMap<String, Object>> getMovies(JSONArray jMovies) throws NullPointerException { int movieCount = jMovies.length(); List<HashMap<String, Object>>

这就是我试图将“ID”从api添加到arraylist的方式

int id;


 private List<HashMap<String, Object>> 
               getMovies(JSONArray jMovies) throws NullPointerException {


 int movieCount = jMovies.length();


 List<HashMap<String, Object>> movieList = new ArrayList<HashMap<String, Object>>();


 HashMap<String, Object> movie = null;

    //Taking each movie, parses and adds to list object
    for (int i = 0; i < movieCount; i++) {

        try {
            JSONObject getid=(JSONObject) jMovies.get(i);

            movie = getMovie(getid);
            movieList.add(movie);
            id =Integer.parseInt(getid.getString("id"));


        } catch (JSONException e) {

        }
        getNumberlist(i,id);
    }

    return movieList;
}


public ArrayList<Integer> ids=new ArrayList<Integer>();
public void getNumberlist(int i,int id)
{
    ids.add(i,id);

}

public List<Integer> getNumberslist()
{ return this.ids;
}
int-id;
私人名单
getMovies(JSONArray jMovies)抛出NullPointerException{
int movieCount=jMovies.length();
List movieList=new ArrayList();
HashMap movie=null;
//拍摄每部电影,解析并添加到列表对象
for(int i=0;i
并尝试在Itemclick listener上获取它

MovieJSONParser mj = new MovieJSONParser();


public void onItemClick(AdapterView<?> l, View v, int position, long id) {


   Intent intent = new Intent(this,next.class);

   if(position==0) {
       int id1 = mj.getNumberslist().get(0);
       intent.putExtra("id",id1);
       startActivity(intent);
   }
    if(position==1) {
        int id1 = mj.getNumberslist().get(1);
        intent.putExtra("id",id1);
        startActivity(intent);
    }
    if(position==2) {
        int id1 = mj.getNumberslist().get(2);
        intent.putExtra("id",id1);
        startActivity(intent);
    }
    if(position==3) {
        int id1 = mj.getNumberslist().get(3);
        intent.putExtra("id",id1);
        startActivity(intent);
    }

    }
MovieJSONParser mj=new MovieJSONParser();
公共虚线单击(适配器视图l、视图v、内部位置、长id){
Intent Intent=新Intent(this,next.class);
如果(位置==0){
int id1=mj.getNumberList().get(0);
意向。额外(“id”,id1);
星触觉(意向);
}
如果(位置==1){
int id1=mj.getNumberslist().get(1);
意向。额外(“id”,id1);
星触觉(意向);
}
如果(位置==2){
int id1=mj.getNumberslist().get(2);
意向。额外(“id”,id1);
星触觉(意向);
}
如果(位置==3){
int id1=mj.getNumberslist().get(3);
意向。额外(“id”,id1);
星触觉(意向);
}
}

首先,如果要捕获异常,至少要打印堆栈跟踪,以便更容易调试代码

在使用jMovies.get(i)获取JSONObject时,api数据为空,因此您将获得索引超出绑定异常

     for (int i = 0; i < movieCount; i++) {

            try {
                JSONObject getid=(JSONObject) jMovies.get(i);

                movie = getMovie(getid);
                movieList.add(movie);
                id =Integer.parseInt(getid.getString("id"));


            } catch (JSONException e) {
              e.printStackTrace();
            }
            getNumberlist(i,id);
        }
for(int i=0;i

检查您是否在jMovies中获取数据。

永远不要默默地吞下异常
catch(JSONException e){}
@ScaryWombat我收到了错误:异常:java.lang.IndexOutOfBoundsException:Index:0,Size:0帮助我解决这个问题。我认为问题在于您忽略了异常。
catch(JSONException e){}
请在这里发布完整的stacktrace。是的,我在jMovies中获得的数据与在getMovie(getid)中传递时一样该列表中的对象将使用数据更新并返回。如果jMovies不为空,您将获得数据。但是,由于您添加了获取异常的注释:java.lang.IndexOutOfBoundsException:Index:0,Size:0,只有当jMovies为空并且您尝试使用jMovies.get(i)获取第0个索引处的数据时,才会发生这种情况。尝试记录jMovies.get(i)的值,也尝试记录jMovies.length的值。