如何从另一个类访问courseID变量?

时间:2017-08-20 05:51:24

标签: java android

我有一个片段和一个java类。我想从FragmenrVRList片段访问Generator类中的courseID变量。我试图将它声明为静态变量但不允许。我该怎么做?提前谢谢你:)

Generator.java

public class Generator {

public static List<DObjectVrList> getData(){
    int courseID;
    List<DObjectVrList> courses = new ArrayList<>();
    for (int i=1; i<=8;i++){
        DObjectVrList course = new DObjectVrList();
        course.setId(i);
        courseID = course.getId();
        switch (i){
            case 1:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 2:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 3:
                course.setTitleCourse("Course " +i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 4:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 5:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 6:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 7:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
            case 8:
                course.setTitleCourse("Course "+i);
                course.setCourseDate("Today at 9 pm");
                break;
        }
        courses.add(course);
    }
    return courses;
}

FragmentVRList.java

public class FragmentVRList extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.activity_main,container,false);
    View cardView = inflater.inflate(R.layout.card_vr,container,false);
    Generator generator = new Generator();

    RecyclerView recyclerView = (RecyclerView)rootView.findViewById(R.id.recycle);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    AdapterVRList adapter = new AdapterVRList(getActivity(), Generator.getData());
    recyclerView.setAdapter(adapter);
    recyclerView.setNestedScrollingEnabled(false);

    switch (Generator.getData())

    return rootView;
}

}

2 个答案:

答案 0 :(得分:0)

首先,courseID不是Generator类的成员;它是getData()函数的本地变量。

课程ID似乎是从DObjectVrList.getId()检索的。由于getData()会返回DObjectVrList个对象的列表,因此您可以使用DObjectVrList遍历列表并获取列表中每个getId()的课程ID。

Generator generator = new Generator();
List<DObjectVrList> data = Generator.getData();

for (DObjectVrList course : data) {
    int courseID = course.getId();
}

答案 1 :(得分:0)

您在静态函数中定义了courseID。这意味着该变量的范围仅限于该函数 - 除非调用该函数,否则它不存在。

我猜你是一个相当新的程序员?因为这段代码的风格需要很多工作。首先,你根本不需要那个switch语句。每个分支都做同样的事情。整个循环可以重写为:

for (int i=1; i<=8;i++){
    DObjectVrList course = new DObjectVrList();
    course.setId(i);
    course.setTitleCourse("Course "+i);
    course.setCourseDate("Today at 9 pm");
    courses.add(course);
}

一般情况下,如果你发现自己循环并在循环变量上进行切换,那么你几乎总是错的。事实上,我看到你以后也要转换语句 - 转换语句实际上并没有像你似乎使用它们那样多,你需要花更多的时间思考你是如何尝试的操纵通用数据,而不是对个别价值做出假设。

然后,当您想要获取课程ID时,您不需要访问Generator类中的任何内容。你去吧

List<DObjectVrList> courses = Generator.getData();
int courseID = courses.get(index_you_want).getCourseId();

如果你想对所有课程做点什么,你可以去:

for(DObjectVrList course : courses) {
    int courseID = course.getCourseID();
    //DO whatever you want with the course id here-  without using a switch
}
相关问题