2016-03-21 52 views
0

我一直在复制粘贴不同的代码到我的应用程序(因为我刚刚开始编码),并从朋友的一些帮助。但我不想打扰他们。从其他活动接收数据ArrayList [Java]

我的问题是,我不知道如何打开在该类的底部上创建的ArrayList到另一个类中,他将值分成字符串,稍后将传递,最后应该在我的Youtube API。

首先吸气,这是第一个活动(LesSelectionActivity.java)

public void getLessons(){ 

    APIClient.get(url, new JsonHttpResponseHandler(){ 
     @Override 
     public void onSuccess(int statusCode, Header[] headers, JSONObject object) { 

      if (object != null) { 
       try { 
        JSONArray jsonLesson = object.getJSONArray("sqllessons"); 
        mLessons = new ArrayList<Lesson>(); 
        for (int Index = 0; Index < jsonLesson.length(); Index++) { 

         try { 
          JSONObject jsonLes = jsonLesson.getJSONObject(Index); 
          Lesson lesson = new Lesson(); 

          lesson.id = jsonLes.getInt("_id"); 
          lesson.number = jsonLes.getInt("lesnumber"); 
          lesson.videoId = jsonLes.getString("videourl"); 

          System.out.println("data test: " + lesson.id); 

          mLessons.add(lesson); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
          return; 
         } 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
        return; 
       } 
      } 
      setButtonLessons(); 
     } 

     @Override 
     public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { 
      Toast.makeText(LesSelectionActivity.this, "FAIL", Toast.LENGTH_LONG).show(); 
     } 
    }); 
} 

public ArrayList<Lesson> getArrayLesson() { 
    return mLessons; 
} 

我希望它在我的“DataFiller” 它没有XML /布局打开,并应作为一个适配器行为以上活动。

public class DataFiller{ 

public static ArrayList<Lesson> readLessons(int given) { 
    ArrayList<Lesson> lessons = new ArrayList<Lesson>(); 
    for (int i = (given * 25) - 24; i <= 25 * given; i++) { 
     Lesson lesson = new Lesson(); 
     lesson.setId(i); 
     lessons.add(lesson); 
    } 
    return lessons; 
} 

上面的脚本只是一个空的数组列表,所以我可以测试列表视图。但是这应该从其他活动编辑到'新'ArrayList。

我不确定你是否需要它,但这里是课程模型。

public class Lesson implements Serializable { 

public int id; 
public int number; 
public String videoId; 

public Lesson() { 
} 

public Lesson(Lesson lesson) { 
    number = lesson.number; 
    id = lesson.id; 
    videoId = lesson.videoId; 
} 

public int getId() { return id; } 

public void setId(int id) { 
    this.id = id; 
} 

public String getVideoId() { 
    return videoId; 
} 

public void setVideoId(String videoId) { 
    this.videoId = videoId; 
} 

public int getNumber() { 
    return number; 
} 

public void setNumber(int number) { 
    this.number = number; 
} 

我一直在寻找这整个一天的awnser如何使用ArrayList的,但mayby由于缺乏知识的人,我没有使用正确的搜索字词。

PS。你是如何学习数据传输的(如JSON和ArrayLists)。只是在做和尝试?或者你有在线课程什么的?我已经尝试了基本的Android Studio课程,但是他们坚持了很长的基础知识之后就失去了兴趣。但是我注意到,使用这个应用程序会得到多远,我坚持的更多(我认为是)简单的编码?

+0

好了,所以首先你必须把整个来龙去脉此,因为我真的不明白什么是第一类,什么是第二类,但我会假设第一个是活动,第二个是适配器,你必须做的是在获得你的数组列表后,将它传递给你的Adapter,如何?创建一个方法来设置它或通过构造函数本身传递它,如果你需要从一个活动传递给另一个活动,你将不得不通过这个意图来完成它,请多说明一下你的代码的上下文,我会感谢你的帮助。 – Eefret

+0

看来第一堂课有一个你可以保存Arraylist的领域。还有你定义的getArrayLesson()方法只返回你想要的数组。你能粘贴更多的代码吗? – marco

+0

我想告诉你的代码,但我不知道你正在寻找哪个代码。 getArrayLesson()在setButtonLessons上被调用,但那还没有工作。 – Jaxhead

回答

1

为了让您在getLessons填充的ArrayList()方法只需要调用这样的类和getArrayLesson()方法:

public class DataFiller{ 

    public ArrayList<Lesson> readLessons() { 
     return LesSelectionActivity.getArrayLesson(); 
    } 
} 
+0

我试过这个,但是当我这样做时,我的返回mLessons现在给出了一个错误“非静态字段'mLessons'不能从静态上下文中引用”。 – Jaxhead

+0

change public static ArrayList readLessons()public ArrayList readLessons() – jonhid

+0

如果我删除静态,“返回LesSelectionActivity.getArrayLesson();”不再工作,并提供错误“非静态方法”getArrayLesson()'不能从静态上下文中引用“。 对我来说,这没有任何意义,因为当我输入它时建议我再次将第一个类(LesSelectionActivity)中的getArrayLesson设置为public static。 – Jaxhead