我有一个片段和一个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;
}
}
答案 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
}