2015-04-19 6 views
0

Хорошо, поэтому я пытаюсь создать приложение, которое использует представление календаря, чтобы создать календарь календаря и создать список покупок. Что-то, что я могу использовать в своей личной жизни. то, что я использую, пытается захватить рецепт из адаптера списка и добавить его в основное действие. любая помощь в том, как это сделать. Я пробовал несколько методов из различных учебников, но не имел успеха. Вот мой код:Получить объект из ListAdapter/ListView

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; 
    } 
} 

Спасибо за любую помощь !!!!

+0

RecipeListDialogFragment расширяет DialogFragment реализует OnClickListener но где метод OnClick? –

+0

плюс вы не установили ни одного элемента прослушивания элемента вашего рецептаListView. –

ответ

0

Изменить этот

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

к этому

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

и позвонить Recipe demo = adapter.getItem(123); везде, где вам это нужно