Guest User

Untitled

a guest
Oct 15th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
  2. at java.util.ArrayList.get(ArrayList.java:411)
  3. at com.tijdelijk.firebasetest.Start$1.populateViewHolder(Start.java:69)
  4. at com.tijdelijk.firebasetest.Start$1.populateViewHolder(Start.java:64)
  5.  
  6. public class CategoryFragment extends Fragment {
  7.  
  8. View myFragment;
  9.  
  10. RecyclerView listCategory;
  11. RecyclerView.LayoutManager layoutManager;
  12. FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter;
  13.  
  14. FirebaseDatabase database;
  15.  
  16. DatabaseReference categories;
  17. DatabaseReference subCategory;
  18.  
  19. public static CategoryFragment newInstance() {
  20. CategoryFragment fragment = new CategoryFragment();
  21. return fragment;
  22. }
  23.  
  24. @Override
  25. public void onCreate(@Nullable Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27.  
  28. database = FirebaseDatabase.getInstance();
  29. categories = database.getReference("Category");
  30. subCategory = database.getReference("SubCategory");
  31.  
  32. }
  33.  
  34. @Nullable
  35. @Override
  36. public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  37. myFragment = inflater.inflate(R.layout.fragment_category, container, false);
  38.  
  39. listCategory = (RecyclerView) myFragment.findViewById(R.id.listCategory);
  40. listCategory.setHasFixedSize(true);
  41. layoutManager = new LinearLayoutManager(container.getContext());
  42. listCategory.setLayoutManager(layoutManager);
  43.  
  44. loadCategories();
  45.  
  46.  
  47. return myFragment;
  48. }
  49.  
  50. private void loadCategories() {
  51. adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(
  52. Category.class,
  53. R.layout.category_layout,
  54. CategoryViewHolder.class,
  55. categories
  56. ) {
  57.  
  58.  
  59. @Override
  60. protected void populateViewHolder(CategoryViewHolder viewHolder, final Category model, int position) {
  61. viewHolder.category_name.setText(model.getName());
  62. Picasso.with(getActivity())
  63. .load(model.getImage())
  64. .into(viewHolder.category_image);
  65.  
  66. viewHolder.setItemClickListener(new ItemClickListener() {
  67. @Override
  68. public void onClick(View view, int position, boolean isLongClick) {
  69. Intent startGame = new Intent(getActivity(), Start.class);
  70. Common.categoryId = adapter.getRef(position).getKey();
  71. loadSubCategory(Common.categoryId);
  72.  
  73. startActivity(startGame);
  74. }
  75. });
  76. }
  77. };
  78. adapter.notifyDataSetChanged();
  79. listCategory.setAdapter(adapter);
  80. }
  81.  
  82. private void loadSubCategory(String categoryId) {
  83.  
  84. //Clear list if there are old subCategory
  85. if (Common.subCategoryList.size() > 0) {
  86. Common.subCategoryList.clear();
  87. }
  88.  
  89. subCategory.orderByChild("CategoryId").equalTo(categoryId)
  90. .addValueEventListener(new ValueEventListener() {
  91. @Override
  92. public void onDataChange(DataSnapshot dataSnapshot) {
  93. for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
  94. SubCategory ques = postSnapshot.getValue(SubCategory.class);
  95. Common.subCategoryList.add(ques);
  96. }
  97. }
  98.  
  99. @Override
  100. public void onCancelled(DatabaseError databaseError) {
  101.  
  102. }
  103. });
  104. }
  105.  
  106. public class Start extends AppCompatActivity {
  107.  
  108.  
  109. FirebaseDatabase database;
  110. DatabaseReference subCategory;
  111.  
  112. FirebaseRecyclerAdapter<SubCategory, SubCategoryViewHolder> adapter;
  113. RecyclerView listSubCategory;
  114. RecyclerView.LayoutManager layoutManager;
  115.  
  116.  
  117.  
  118. @Override
  119. protected void onCreate(Bundle savedInstanceState) {
  120. super.onCreate(savedInstanceState);
  121. setContentView(R.layout.activity_start);
  122.  
  123. database = FirebaseDatabase.getInstance();
  124. subCategory = database.getReference("SubCategory");
  125.  
  126. listSubCategory = findViewById(R.id.listSubCategory);
  127. listSubCategory.setHasFixedSize(true);
  128. layoutManager = new LinearLayoutManager(getBaseContext());
  129. listSubCategory.setLayoutManager(layoutManager);
  130.  
  131. loadSubCategories();
  132. adapter.notifyDataSetChanged();
  133. listSubCategory.setAdapter(adapter);
  134. }
  135.  
  136.  
  137.  
  138.  
  139. private void loadSubCategories() {
  140. adapter = new FirebaseRecyclerAdapter<SubCategory, SubCategoryViewHolder>(
  141. SubCategory.class,
  142. R.layout.subcategory_layout,
  143. SubCategoryViewHolder.class,
  144. subCategory
  145. ) {
  146.  
  147.  
  148. @Override
  149. protected void populateViewHolder(SubCategoryViewHolder viewHolder, SubCategory model, int position) {
  150. viewHolder.subcategory_nlname.setText(Common.subCategoryList.get(position).getLatijnseNaam());
  151. viewHolder.subcategory_ltname.setText(Common.subCategoryList.get(position).getNederlandseNaam());
  152.  
  153.  
  154. viewHolder.setItemClickListener(new ItemClickListener() {
  155. @Override
  156. public void onClick(View view, int position, boolean isLongClick) {
  157. Intent startGame = new Intent(Start.this, Start.class);
  158. Common.categoryId = adapter.getRef(position).getKey();
  159.  
  160. startActivity(startGame);
  161. }
  162. });
  163. }
  164.  
  165.  
  166. };
  167. }
  168.  
  169. public class SubCategoryViewHolder extends RecyclerView.ViewHolder
  170. implements View.OnClickListener{
  171.  
  172. public TextView subcategory_nlname;
  173. public TextView subcategory_ltname;
  174.  
  175.  
  176. private ItemClickListener itemClickListener;
  177.  
  178. public SubCategoryViewHolder(View itemView) {
  179. super(itemView);
  180. subcategory_ltname = itemView.findViewById(R.id.latijnse_naam);
  181. subcategory_nlname = itemView.findViewById(R.id.nederlandse_naam);
  182.  
  183. public void setItemClickListener(ItemClickListener itemClickListener) {
  184. this.itemClickListener = itemClickListener;
  185. }
  186.  
  187. @Override
  188. public void onClick(View view) {
  189. itemClickListener.onClick(view,getAdapterPosition(),false);
  190. }
Add Comment
Please, Sign In to add comment