0

Ok so I am trying to create an app that uses a calendar view to get create a calendar of meals and the generates a shopping list. Something I can use in my personal life. what I am running into is trying to grab a recipe from the list adapter and add it to the main activity. any help on how to do this. I have tried several methods from various tutorials but no success. Here is my code:

MainActivity:

package com.cannon_inc.monthlymenu;

import java.util.Calendar;
import java.util.Date;
import java.util.ArrayList;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CalendarView;
import android.widget.Toast;


public class MainActivity extends Activity 
{
CalendarView calendarView = (CalendarView) findViewById(R.id.menuCalendar);
private RecipeListDialogFragment recipeDialog = new RecipeListDialogFragment();
private ArrayList<MenuItems> monthlyMenu;
private ShoppingList shoppingList;
private Date startDate = new Date();
@SuppressWarnings("deprecation")
private Date endDate = new Date(startDate.getDay() + 7);
private Date selectedDate = new Date(calendarView.getDate());   

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.

    int screenOrientation = getResources().getConfiguration().orientation;

        // use landscape for extra large tablets; otherwise, use portrait
        if (screenOrientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            getMenuInflater().inflate(R.menu.monthly_menu_menu, menu);
        }
        else if(screenOrientation == Configuration.ORIENTATION_PORTRAIT)
        {
            getMenuInflater().inflate(R.menu.shopping_list_menu, menu);
            shoppingList = new ShoppingList(monthlyMenu, startDate, endDate);
        }
   return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // switch based on the MenuItem id
    switch (item.getItemId()) {
    case R.id.startDate:
        return true;
    case R.id.endDate:
        return true;
    case R.id.selectMeal:
        updateDate();
        recipeDialog.show(getFragmentManager(), "Recipe Dialog");
        monthlyMenu.add(new MenuItems(new Recipe(), selectedDate));
        return true;
    case R.id.clearMenu:
        monthlyMenu.clear();
        Toast.makeText(this, "Menu has been cleared!", Toast.LENGTH_SHORT).show();
        return true;
    } // end switch
    return true;
}

public void updateDate()
{
    selectedDate = new Date(calendarView.getDate());
}
}

ListView/AlertDialog:

package com.cannon_inc.monthlymenu;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class RecipeListDialogFragment extends DialogFragment implements OnClickListener
{
    RecipeAdapter recipeAdapter = new RecipeAdapter();
    private Recipe selectedRecipe;


    public Dialog onCreateDialog(Bundle savedInstanceState)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    final ListView recipeListView = (ListView) getActivity().getLayoutInflater().inflate(R.layout.fragment_recipe_name_list, null);
        recipeListView.setAdapter(recipeAdapter);
        recipeListView.setClickable(true);



        builder.setView(recipeListView);
        builder.setTitle("Recipe List");
        builder.setCancelable(true);

        return builder.create();
    }

    public Recipe getSelectedRecipe()
    {
        return selectedRecipe;
    }

}

ListAdapter:

package com.cannon_inc.monthlymenu;

import java.util.ArrayList;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class RecipeAdapter extends BaseAdapter
{
    private static ArrayList<Recipe> menuList = new ArrayList<Recipe>();

    public RecipeAdapter()
    {
        menuList.add(new Recipe());
    }

    @Override
    public int getCount() 
    {
        return menuList.size();
    }

    @Override
    public Object getItem(int index) 
    {
        return getItem(index);
    }

    @Override
    public long getItemId(int index) 
    {
        return index;
    }

    @Override
    public View getView(int index, View view, ViewGroup parent) 
    {
        if (view == null)
        {
            LayoutInflater inflater = LayoutInflater.from(parent.getContext());
            view = inflater.inflate(R.layout.fragment_recipe_list, parent, false);
        }

        Recipe recipe = menuList.get(index);

        TextView recipeNameView = (TextView) view.findViewById(R.id.recipeName);
        recipeNameView.setText(recipe.getName());

        return view;
    }   
}

Thank you for any and all help!!!!

Alex
  • 13,024
  • 33
  • 62

1 Answers1

0

Change this

@Override
public Object getItem(int index) 
{
    return getItem(index);
}

to this

@Override
public Recipe getItem(int index) 
{
    return menuList.get(index);
}

and call Recipe demo = adapter.getItem(123); wherever you need it

Bojan Kseneman
  • 15,488
  • 2
  • 54
  • 59