Хорошо, поэтому я пытаюсь создать приложение, которое использует представление календаря, чтобы создать календарь календаря и создать список покупок. Что-то, что я могу использовать в своей личной жизни. то, что я использую, пытается захватить рецепт из адаптера списка и добавить его в основное действие. любая помощь в том, как это сделать. Я пробовал несколько методов из различных учебников, но не имел успеха. Вот мой код:Получить объект из 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;
}
}
Спасибо за любую помощь !!!!
RecipeListDialogFragment расширяет DialogFragment реализует OnClickListener но где метод OnClick? –
плюс вы не установили ни одного элемента прослушивания элемента вашего рецептаListView. –