No dia seguinte com menos sono eu consegui encontrar o problema. Ainda apanho no esquema de herança, declarar pai e instanciar filho, etc. Mas de qualquer forma obrigado a todos e desculpa encher o saco.
Em quarta-feira, 23 de outubro de 2013 15h58min03s UTC-2, Matheus Henrique da Silva escreveu:
-- Em quarta-feira, 23 de outubro de 2013 15h58min03s UTC-2, Matheus Henrique da Silva escreveu:
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);}}O fragmento que exibe a lista:public class CardapioListFragment extends Fragment implementsOnItemClickListener {private int tipo;private List<ItemCardapio> lista;private ListView lv;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); tipo = getArguments().getInt(CardapioActivity.EXTRA_TIPO_ ITEM); popularLista(tipo);}@Overridepublic 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();}}@Overridepublic 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;}@Overridepublic int getCount() {return lista.size();}@Overridepublic Object getItem(int arg0) {return lista.get(arg0);}@Overridepublic long getItemId(int arg0) {return lista.get(arg0).getId();}@Overridepublic 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); }// ======================MASSASpublic 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