【问题标题】:Recieving data from other activity ArrayList [Java]从其他活动 ArrayList [Java] 接收数据
【发布时间】:2016-03-21 15:31:42
【问题描述】:

我一直在将许多不同的代码复制粘贴到我的应用程序中(因为我刚开始编码)并得到了朋友的帮助。但我不想继续打扰他们。

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

首先是getter,这是第一个活动(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/Layout,应该充当上述活动的适配器。

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;
}

我整天都在寻找如何使用该 ArrayList 的 awnser,但可能是因为我不知道我没有使用正确的搜索词。

PS。您是如何学习数据传输的(例如 JSON 和 ArrayLists)。只是通过做和尝试?或者你有没有在线课程之类的?我已经尝试过基本的 Android Studio 课程,但在他们长期坚持基础知识后失去了兴趣。但我注意到我在使用这个应用程序时能走多远,我越是坚持(我认为是)简单的编码?

【问题讨论】:

  • 好的,所以首先你必须把整个上下文放在这个上面,因为我不太明白什么是第一类,什么是第二类,但我会假设第一个是活动,第二个你的适配器,你必须做的是在得到你的arraylist之后,将它传递给你的适配器,如何?创建一个方法来设置它或通过构造函数本身传递它,如果你需要将它从一个 ACTIVITY 传递给另一个 Activity 你将不得不通过意图来做,请多解释一下你的代码的上下文,我会感谢您的帮助。
  • 似乎头等舱有一个字段,您可以在其中保存 Arraylist。您还定义了 getArrayLesson() 方法,它只返回您想要的数组。你能粘贴更多代码吗?
  • 我想向您展示代码,但我不知道您要查找的代码。 getArrayLesson() 正在 setButtonLessons 上被调用,但这还没有工作。

标签: java android json arraylist


【解决方案1】:

要获取您在 getLessons() 方法中填写的 ArrayList,只需像这样调用类和 getArrayLesson() 方法:

 public class DataFiller{

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

【讨论】:

  • 我试过这个,但是当我这样做时,我返回的 mLessons 现在会给出错误“无法从静态上下文引用非静态字段 'mLessons'”。
  • 将 public static ArrayList readLessons() 改为 public ArrayList readLessons()
  • 如果我删除静态,“返回 LesSelectionActivity.getArrayLesson();”不再起作用并给出错误“不能从静态上下文引用非静态方法'getArrayLesson()'”。对我来说,这没有任何意义,因为当我 alt 输入时,它建议我将第一堂课 (LesSelectionActivity) 中的 getArrayLesson 再次设为公共静态。
  • 方法 .getArrayLesson() 不是静态的?将其更改为静态
  • 如果我将其设为静态,则返回 mLessons;会再次说“不能从静态上下文引用非静态字段'mlessons'”... mlessons 位于该线程的第一个/顶部活动中,并且是一个由课程 ID、课程编号和课程视频 ID 组成的数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2016-01-25
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多