我是新手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)