Advertisement
vladimirVenkov

Android ParseObject via nested interface example

Aug 21st, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.07 KB | None | 0 0
  1. public class RecipeListFragment extends Fragment implements AdapterView.OnItemClickListener { //Example with custom Class RecipeList
  2.     private Map<String, Recipe> mListOfRecipies;
  3.     private ListView mRecipeListView;
  4.     private ArrayAdapter<String> mListOfRecipiesAdapter;
  5.     private OnRecipeItemClickListener mOnRecipeItemClickListener;
  6.     private Repository<Recipe> mFirebaseRepository;
  7.  
  8.     public RecipeListFragment() {
  9.         // Required empty public constructor
  10.     }
  11.  
  12.     public static RecipeListFragment newInstance() {
  13.         return new RecipeListFragment();
  14.     }
  15.  
  16.     private void init() {
  17.  
  18.         mListOfRecipiesAdapter = new ArrayAdapter<>(
  19.                 getContext(),
  20.                 android.R.layout.simple_list_item_1
  21.         );
  22.         mListOfRecipies = new HashMap<>();
  23.         mFirebaseRepository = new FirebaseRepository<>(Recipe.class);
  24. //todo to be moved in a repository class!
  25.         mFirebaseRepository.getAll(recipes -> {
  26.             for (Recipe recipe: recipes) {
  27.  
  28.                 if (recipe.getDeleted()) { //instead of deleting from firebase
  29.                     continue;
  30.                 }
  31.                 mListOfRecipiesAdapter.add(recipe.name);
  32.                 mListOfRecipies.put(recipe.name, recipe);
  33.             }
  34.         });
  35.     }
  36.  
  37.     @Override
  38.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  39.                              Bundle savedInstanceState) {
  40.  
  41.         View view = inflater.inflate(R.layout.fragment_recipe_list, container, false);
  42.         mRecipeListView = view.findViewById(R.id.lv_recipe_list);
  43.  
  44.         init();
  45.  
  46.         mRecipeListView.setAdapter(mListOfRecipiesAdapter);
  47.         mRecipeListView.setOnItemClickListener(this);
  48.  
  49.         return view;
  50.     }
  51.  
  52.     @Override
  53.     public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
  54.         //position which was clicked in the adapter
  55.         String keyName = mListOfRecipiesAdapter.getItem(position);
  56.         Recipe recipe = mListOfRecipies.get(keyName);
  57.         mOnRecipeItemClickListener.onClick(recipe);
  58.     }
  59.  
  60.     public void setOnRecipeItemClickListener(OnRecipeItemClickListener listener) {
  61.         mOnRecipeItemClickListener = listener;
  62.     }
  63.  
  64.     public interface OnRecipeItemClickListener {
  65.         void onClick(Recipe recipe);
  66.     }
  67. }
  68. /*
  69. ~~~
  70. */
  71. //implements interface from RecipeListFragment and parse the Recipe recipe via Intent
  72. public class ListAllFragment extends Fragment implements RecipeListFragment.OnRecipeItemClickListener {
  73.  
  74.  
  75.     private RecipeListFragment mRecipeListFragment;
  76.  
  77.     public ListAllFragment() {
  78.         // Required empty public constructor
  79.     }
  80.  
  81.  
  82.     @Override
  83.     public View onCreateView(LayoutInflater inflater, ViewGroup container,
  84.                              Bundle savedInstanceState) {
  85.         View view = inflater.inflate(R.layout.fragment_list_all, container, false);
  86.         mRecipeListFragment = RecipeListFragment.newInstance();
  87.  
  88.         getFragmentManager()
  89.                 .beginTransaction()
  90.                 .replace(R.id.listAll_Fragment, mRecipeListFragment)
  91.                 .commit();
  92.  
  93.         mRecipeListFragment.setOnRecipeItemClickListener(this);
  94.         return view;
  95.     }
  96.  
  97.     public static ListAllFragment newInstance() {
  98.         return new ListAllFragment();
  99.     }
  100.  
  101.     @Override
  102.     public void onClick(Recipe recipe) {
  103.         Intent intent = new Intent(
  104.                 getContext(),
  105.                 RecipeDetailsActivity.class
  106.                 );
  107.         intent.putExtra("NAME_Recipe", recipe); //need to get this extra in RecipeDetailsActivity
  108.         intent.putExtra("navigate", "details");
  109.         startActivity(intent);
  110.     }
  111. }
  112. /*
  113. ~~~
  114. */
  115.  
  116. //get the intent from the previous class and uses the parsed recipe
  117. public class RecipeDetailsActivity extends BaseDrawerActivity {
  118.     public static final long IDENTIFIER = 2;
  119.     private Fragment mDestinationFragment;
  120.     private Recipe mRecipe;
  121.     private Toolbar mToolbar;
  122.  
  123.     @Override
  124.     protected void onCreate(Bundle savedInstanceState) {
  125.         super.onCreate(savedInstanceState);
  126.         setContentView(R.layout.activity_recipe_details);
  127.         mToolbar = findViewById(R.id.drawer_toolbar);
  128.         setSupportActionBar(mToolbar);
  129.  
  130.         Intent intent = getIntent();
  131.         mRecipe = (Recipe) intent.getSerializableExtra("NAME_Recipe");
  132.         String navigation = intent.getStringExtra("navigate");
  133.  
  134.         if (navigation.equals("details")) { //goes for DetailsRecipeFragment or RemoveThisRecipeFragment
  135.             mDestinationFragment = RecipeDetailsFragment.newInstance(mRecipe);
  136.         } else {
  137.             mDestinationFragment = RemoveThisRecipeFragment.newInstance(mRecipe);
  138.         }
  139.  
  140.         getFragmentManager()
  141.                 .beginTransaction()
  142.                 .replace(R.id.details_or_remove_recipe, mDestinationFragment)
  143.                 .commit();
  144.     }
  145.  
  146.     @Override
  147.     protected long getIdentifier() {
  148.         return IDENTIFIER;
  149.     }
  150.  
  151.     @Override
  152.     protected Toolbar getDrawerToolbar() {
  153.         return mToolbar;
  154.     }
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement