Soru & Cevap

ArrayAdapterden veri yollama sorunu.

02.12.2015 - 10:28

Merhaba arkadaşlar. Bir adet fragment`ım var ve fragment`ın içinde ArrayAdapter`üm var. Fragment içindeki verileriYolla metoduna adapterden ne şekilde veri yollamaya çalışırsam çalışayım null pointer hatası alıyorum. 

EDİT: Metodun içindeki Toast mesajı deneme amaçlıdır verinin metodu gelip gelmediğini anlamak için. Normalde interface ile başka bir fragment`a yolluyorum veriyi ama gene nullpointer hatası alıyorum.

Fragment ve ArrayAdapter Kodları: (ArrayAdapter Fragment Class`ının içinde)

public class GelirKategoriFragment extends DialogFragment {

    private ListView lstKategoriler;
    private View roowView;
    private List<ModelKategori> modelKategoriList = new ArrayList<ModelKategori>();
    public GelirGiderGirisiInterface gelirGiderGirisiInterface;

    public GelirKategoriFragment(GelirGiderGirisiInterface gelirGiderGirisiInterface) {
        this.gelirGiderGirisiInterface = gelirGiderGirisiInterface;
    }

    public GelirKategoriFragment() {
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        roowView = inflater.inflate(R.layout.gelir_kategori_fragment, container, false);
        return roowView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        lstKategoriler = (ListView) roowView.findViewById(R.id.lstGelirKategoriler);
        kategorileriCek();
    }

    private void kategorileriCek() {
        Veritabani db = new Veritabani(getContext());
        modelKategoriList = db.gelirKategorileriCek();
        if (modelKategoriList != null) {
            lstKategoriler.setAdapter(new GelirKategoriAdapter(getContext(), R.layout.listview_kategoripopup_tasarim, modelKategoriList));
        }
    }

    @Override
    public void onResume() {
        ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
        super.onResume();
    }

    public void verileriYolla(String kategoriAdi, int kategoriResmi) {
        Toast.makeText(getContext(), kategoriAdi, Toast.LENGTH_SHORT).show();
    }


    private class GelirKategoriAdapter extends ArrayAdapter<ModelKategori> {
        private int resource;
        private List<ModelKategori> modelKategoriList;
        private GelirKategoriFragment gelirKategoriFragment = new GelirKategoriFragment();

        public GelirKategoriAdapter(Context context, int resource, List<ModelKategori> modelKategoriList) {
            super(context, resource, modelKategoriList);
            this.resource = resource;
            this.modelKategoriList = modelKategoriList;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Holder mainHolder = null;
            if (convertView == null) {
                LayoutInflater inflater = LayoutInflater.from(getContext());
                convertView = inflater.inflate(resource, parent, false);
                final Holder holder = new Holder();
                holder.imgKategoriResmi = (ImageView) convertView.findViewById(R.id.imgKategoriResmiPopUp);
                holder.tvKategoriAdi = (TextView) convertView.findViewById(R.id.tvKategoriAdiPopUp);
                convertView.setTag(holder);
            }
            mainHolder = (Holder) convertView.getTag();
            final ModelKategori modelKategori = modelKategoriList.get(position);
            mainHolder.imgKategoriResmi.setImageResource(modelKategori.getKategoriResmi());
            mainHolder.tvKategoriAdi.setText(modelKategori.getKategoriAdi());
            convertView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String kategoriAdi = modelKategori.getKategoriAdi();
                    int kategoriResmi = modelKategori.getKategoriResmi();
                    gelirKategoriFragment.verileriYolla(kategoriAdi, kategoriResmi);
                }
            });
            return convertView;
        }

        public class Holder {
            ImageView imgKategoriResmi;
            TextView tvKategoriAdi;
        }
    }
}

 

Gelen Hata :

FATAL EXCEPTION: main
Process: com.example.olohom.drawer, PID: 22961
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources    android.content.Context.getResources()' on a null object reference

 

3 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-11052-1576825910.jpg
alikarakoc
03.12.2015 - 09:19

Merhaba Okan,

getContext()

Yerine yerine aşağıda ki kodu dener misin?

Sonucu bildirirsin.

getBaseContext()

İyi çalışmalar. 

Okan
03.12.2015 - 10:14
getBaseContext ile de nullpointer hatası geliyor. Bu arada konuya şöyle bir edit yaptım. EDİT: Metodun içindeki Toast mesajı deneme amaçlıdır verinin metodu gelip gelmediğini anlamak için. Normalde interface ile başka bir fragment`a yolluyorum veriyi ama gene nullpointer hatası alıyorum.