A classe:
public class ItemPizza extends ItemCardapio {
HashMap<String, Double> preços;
public ItemPizza(long id, int tipo, String nome) { super(id, tipo, nome); preço = null; preços = new HashMap<String, Double>(); }
public void setPreço(String k, Double p) { preços.put(k, p); }
public Double getPreço(String key) { return preços.get(key); }
}public class CardapioListFragment extends Fragment implements OnItemClickListener {
private int tipo; private List<ItemCardapio> lista; private ListView lv;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tipo = getArguments().getInt(CardapioActivity.EXTRA_TIPO_ITEM);
popularLista(tipo);
}
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.listview_layout, null); lv = (ListView) v.findViewById(R.id.listview); lv.setAdapter(new Cardapio_Adapter(getActivity(), lista)); lv.setOnItemClickListener(this); return v; }
void popularLista(int tipo) { lista = new ArrayList<ItemCardapio>(); try { switch (tipo) { case CardapioActivity.TIPO_PIZZA: lista = CardapioActivity.db.getPizzas(); break; case CardapioActivity.TIPO_PIZZA_DOCE: lista = CardapioActivity.db.getPizzasDoces(); break; case CardapioActivity.TIPO_MASSA: lista = CardapioActivity.db.getMassas(); break; default: throw new JSONException( "Erro ao popular a lista, CardapioListFragment.popularLista();");
} } catch (JSONException e) { e.printStackTrace(); } }
@Override public void onItemClick(AdapterView<?> adapter, View view, int pos, long id) { if (tipo == CardapioActivity.TIPO_MASSA) { ItemCardapio item = lista.get(pos); PedidoMassaDialog dialog = PedidoMassaDialog.newInstance(item); dialog.show(getFragmentManager(), null); } else { ItemPizza item = (ItemPizza) lista.get(pos); Toast.makeText( getActivity(), String.valueOf(item .getPreço(CardapioActivity.EXTRA_PREÇO_M)), Toast.LENGTH_LONG).show(); PedidoPizzaDialog dialog = PedidoPizzaDialog.newInstance(item); dialog.show(getFragmentManager(), null); }
}}O adapter:
public class Cardapio_Adapter extends BaseAdapter {
Context context; List<ItemCardapio> lista; List<ItemPizza> listapizza;
public Cardapio_Adapter(Context context, List<ItemCardapio> lista) { this.context = context; this.lista = lista; }
@Override public int getCount() { return lista.size(); }
@Override public Object getItem(int arg0) { return lista.get(arg0); }
@Override public long getItemId(int arg0) { return lista.get(arg0).getId(); }
@Override public View getView(int arg0, View view, ViewGroup viewgroup) { ItemCardapio item = (ItemCardapio) getItem(arg0); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.item_menu_layout, null);
TextView nome = (TextView) view.findViewById(R.id.text_label_menu); TextView desc = (TextView) view.findViewById(R.id.text_desc_menu); nome.setText(item.getNome()); desc.setText(item.getDesc());
if (item.getTipo() == CardapioActivity.TIPO_PIZZA || item.getTipo() == CardapioActivity.TIPO_PIZZA_DOCE) { return view; } else { TextView preco = (TextView) view .findViewById(R.id.preco_item_lista); preco.setText("R$ " + item.getPreço()); return view; }
}
}Onde as listas estao sendo criadas:
public List<ItemCardapio> getPizzas() throws JSONException { return testeLista(CardapioActivity.TIPO_PIZZA); }
public List<ItemCardapio> getPizzasDoces() throws JSONException { return testeLista(CardapioActivity.TIPO_PIZZA_DOCE); }
// ======================MASSAS
public List<ItemCardapio> getMassas() throws JSONException { return testeLista(CardapioActivity.TIPO_MASSA); }
public List<ItemCardapio> testeLista(int tipo) { lista = new ArrayList<ItemCardapio>();
if (tipo == CardapioActivity.TIPO_PIZZA || tipo == CardapioActivity.TIPO_PIZZA_DOCE) {
for (int i = 0; i < 10; i++) { ItemPizza item = new ItemPizza(i + 100, tipo, "Item de Teste " + i); item.setDesc("Descrição do item " + i); item.setPreço(CardapioActivity.EXTRA_PREÇO_P, 10.0); item.setPreço(CardapioActivity.EXTRA_PREÇO_M, 20.0); item.setPreço(CardapioActivity.EXTRA_PREÇO_G, 30.0); item.setPreço(CardapioActivity.EXTRA_PREÇO_F, 40.0);
lista.add(item); }
return lista; } else { for (int i = 0; i < 10; i++) { ItemCardapio item = new ItemCardapio(i + 100, tipo, "Item de Teste " + i); item.setDesc("Descrição do item " + i); item.setPreço(25.00);
lista.add(item); } return lista; }
}Quando eu clico na lista de pizzas ou pizzas doces, na hora de instanciar o PedidoPizzaDialog da o seguinte conjunto de erros:
10-23 17:49:38.452: E/AndroidRuntime(1668): FATAL EXCEPTION: main10-23 17:49:38.452: E/AndroidRuntime(1668): java.lang.NullPointerException10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.PedidoPizzaDialog.<init>(PedidoPizzaDialog.java:48)10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.PedidoPizzaDialog.newInstance(PedidoPizzaDialog.java:26)10-23 17:49:38.452: E/AndroidRuntime(1668): at pizzaria.lafornalha.fragment.CardapioListFragment.onItemClick(CardapioListFragment.java:86)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AdapterView.performItemClick(AdapterView.java:292)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView.performItemClick(AbsListView.java:1058)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.widget.AbsListView$1.run(AbsListView.java:3168)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Handler.handleCallback(Handler.java:605)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Handler.dispatchMessage(Handler.java:92)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.os.Looper.loop(Looper.java:137)10-23 17:49:38.452: E/AndroidRuntime(1668): at android.app.ActivityThread.main(ActivityThread.java:4340)10-23 17:49:38.452: E/AndroidRuntime(1668): at java.lang.reflect.Method.invokeNative(Native Method)10-23 17:49:38.452: E/AndroidRuntime(1668): at java.lang.reflect.Method.invoke(Method.java:511)10-23 17:49:38.452: E/AndroidRuntime(1668): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)10-23 17:49:38.452: E/AndroidRuntime(1668): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)10-23 17:49:38.452: E/AndroidRuntime(1668): at dalvik.system.NativeStart.main(Native Method)
Já estou a varias horas nisto. Por favor alguém me ajude.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.






0 comentários:
Postar um comentário