2017-08-20 9 views
-2

私はフラグメントとJavaクラスを持っています。私は、FragmenrVRListフラグメントからGeneratorクラスのcourseID変数にアクセスしたいと思います。私はそれを静的変数として宣言しようとしましたが、許されません。どうすればいいですか?事前:)別のクラスから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

staticID関数内に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); 
} 

:ループ全体のように書き換えることができます。実際、私はあなたが後でswitch文を書くのを見ています。switch文は、あなたがそれらを使用しているように見えるほど近くでは使用されません。一般的なデータをどのように操作しようとしているか、個々の価値についての前提を作るのではなく、

その後、コース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 
} 
0

まず、courseIDにありがとうと、Generatorクラスのメンバではありません;これはgetData()関数のローカル変数です。

コースIDはDObjectVrList.getId()から検索されたようです。 getData()DObjectVrListオブジェクトのリストを返すので、リスト全体を反復処理して、リスト内の各DObjectVrListのコースIDをgetId()で取得できます。

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

for (DObjectVrList course : data) { 
    int courseID = course.getId(); 
} 
関連する問題