Android:在ListView使用CheckBox的空指针异常

时间:2014-08-01 07:15:07

标签: java android listview checkbox

我是新手android。我创建了一个arraylist,ListView和一个CheckBox。我打算在TextView中获取文本,然后在Checkbox上创建一个String(toString)。但是当我选择时,我会在Checkbox中获得空指针异常。帮帮我,,,感谢任何帮助: - )

private ArrayList<String>simpan_makanan;

private void SimpanMakanan() {
    LocalDate tanggal = new LocalDate();
    ArrayList<Gizi> array = DataGizi.ambil(getActivity()).AmbilGizi();
    for(String t_makanan : simpan_makanan){
        AturVitamin vitamin = DataVitamin.get(t_makanan);
        AturMineral mineral = DataMineral.get(t_makanan);
        AturOther lain2 = DataLain2.get(t_makanan);
        for(Gizi g : array){
            if(vitamin.ambilJumlahVitamin().containsKey(g.toString().toUpperCase()) &&
                    vitamin.ambilJumlahVitamin().get(g.toString().toUpperCase()) !=0){
                    g.tambahnilai(vitamin.ambilJumlahVitamin().get(g.toString().toUpperCase()), tanggal);
                    g.tambahsumbermakan(t_makanan);
                }
                else if (mineral.ambilJumlahMineral().containsKey(g.toString().toUpperCase()) &&
                    mineral.ambilJumlahMineral().get(g.toString().toUpperCase()) !=0 ) {
                    g.tambahnilai(mineral.ambilJumlahMineral().get(g.toString().toUpperCase()), tanggal);
                    g.tambahsumbermakan(t_makanan);
                }
                else if (lain2.ambilJumlahJenisLain2().containsKey(g.toString().toUpperCase()) &&
                    lain2.ambilJumlahJenisLain2().get(g.toString().toUpperCase()) !=0) {
                    g.tambahnilai(lain2.ambilJumlahJenisLain2().get(g.toString().toUpperCase()), tanggal);
                    g.tambahsumbermakan(t_makanan);
                }  else {
                }
        }
    }
    DataGizi.ambil(getActivity()).aturGizi(array);
}

MyListAdapter

private class MyListAdapter extends ArrayAdapter<Makanan> {
    public MyListAdapter(List<Makanan> a_makanan) {
        super(getActivity(),0, a_makanan);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View itemView = convertView;
        if (itemView == null) {
            itemView = getActivity().getLayoutInflater().inflate(R.layout.list_makanan, null);
        }

        Makanan makan = a_makanan.get(position);

        ImageView gambar_makanan = (ImageView)itemView.findViewById(R.id.imageView);
        gambar_makanan.setImageResource(makan.getIconID());

        TextView teks_manfaat = (TextView) itemView.findViewById(R.id.textView2);
        teks_manfaat.setText(makan.getName());

        TextView teks_judul = (TextView) itemView.findViewById(R.id.textView1);
        teks_judul.setText(makan.AmbilManfaat());
        //final String string_makanan = (String) teks_judul.getText();
        final String t_makanan = teks_judul.getText().toString().toUpperCase();

        Button cek_gizi = (Button) itemView.findViewById(R.id.tombol_cek_nilai_gizi);
        cek_gizi.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                JalankanActivityMenggunakanIntent(t_makanan);
            }
        });

        if (NamaKategoriMakanan.equals("BUAH-BUAHAN")){
            itemView.setBackgroundColor(Color.parseColor("#ed242d"));
            }
            else if (NamaKategoriMakanan.equals("SAYURAN")){
                itemView.setBackgroundColor(Color.parseColor("#5cb133"));
            }
            else if (NamaKategoriMakanan.equals("OLAHAN SUSU")){
                itemView.setBackgroundColor(Color.parseColor("#1da6d7"));
            }
            else if (NamaKategoriMakanan.equals("BIJI-BIJIAN")){
                itemView.setBackgroundColor(Color.parseColor("#f6903e"));
            }
            else if (NamaKategoriMakanan.equals("DAGING DAN TELUR")){
                itemView.setBackgroundColor(Color.parseColor("#782f94"));
            }

        CheckBox cekbox_makanan = (CheckBox)itemView.findViewById(R.id.cekbox_makanan);
        cekbox_makanan.setChecked(simpan_makanan.contains(t_makanan));
        cekbox_makanan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               if (isChecked) {
                   simpan_makanan.add(t_makanan);
               } else {
                   simpan_makanan.remove(t_makanan);
               }
           }
       });

        return itemView;
    }               
}

完成Logcat:

  

08-01 14:06:17.983:E / AndroidRuntime(5328):致命异常:主要   08-01 14:06:17.983:E / AndroidRuntime(5328):java.lang.NullPointerException   08-01 14:06:17.983:E / AndroidRuntime(5328):at id.yoehanz.apagis.KategoriMakananFragment.SimpanMakanan(KategoriMakananFragment.java:305)   08-01 14:06:17.983:E / AndroidRuntime(5328):at id.yoehanz.apagis.KategoriMakananFragment.access $ 3(KategoriMakananFragment.java:301)   08-01 14:06:17.983:E / AndroidRuntime(5328):at id.yoehanz.apagis.KategoriMakananFragment $ 1.onClick(KategoriMakananFragment.java:285)

错误行

  

id.yoehanz.apagis.KategoriMakananFragment.SimpanMakanan(KategoriMakananFragment.java:305)

0 个答案:

没有答案