Soru & Cevap

Android Listview adapter hatası ...

09.03.2018 - 10:51

3 tab kısmndan oluşan uygulamamın birinci tab(sekmesinde) sitedeki duyuruları Jsoup kütüphanesi vasıtasıyla  çeken yapıyı çalıştıran kodu çalıştırmak istediğimde 

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
                      at com.onder.eyup.deneme3.tab1duyuru$VeriGetir.onPostExecute(tab1duyuru.java:82)
                      at com.onder.eyup.deneme3.tab1duyuru$VeriGetir.onPostExecute(tab1duyuru.java:63)

hatalarını almaktayım.

Debug çıktılarındaki

      at com.onder.eyup.deneme3.tab1duyuru$VeriGetir.onPostExecute(tab1duyuru.java:82) =82.satır lv.setAdapter(adapter) satırını

63. satır ise 
  at com.onder.eyup.deneme3.tab1duyuru$VeriGetir.onPostExecute(tab1duyuru.java:63)=public class VeriGetir extends AsyncTask<Void ,Void ,Void >  satırını göstermekte

   benim hatadan anladığım  kadarıyla protected void onPostExecute(Void aVoid) 

bloğundaki    lv.setAdapter(adapter);   deki adapter i boş (null) görüyor ama neden yardımcı olabiirmisiniz?

public class tab1duyuru extends Fragment {

    private ProgressDialog progressDialog;
    private static ListView lv;
    public static ArrayList ar = new ArrayList();

    private static Elements duyuru;


   public static String URL = "http://w3.bilecik.edu.tr/bilgisayar/";
    public   ArrayAdapter adapter;

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab1duyuru, container, false);

        ListView lv = (ListView) rootView.findViewById(R.id.liste);

        adapter = new ArrayAdapter((getActivity()), android.R.layout.simple_list_item_activated_1,ar);
        return rootView;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);

        new VeriGetir().execute();
    }

    public class VeriGetir extends AsyncTask<Void ,Void ,Void > {

            @Override


            protected void onPreExecute() {
                super.onPreExecute();
                progressDialog = new ProgressDialog(getActivity());
                progressDialog.setTitle("DUYURULAR");
                progressDialog.setMessage("Lütfen bekleyiniz");
                progressDialog.setIndeterminate(false);
                progressDialog.show();

            }

            @Override
            protected void onPostExecute(Void aVoid) {

          super.onPostExecute(aVoid);
                lv.setAdapter(adapter); 
                progressDialog.dismiss(); 
            }

             @Override

            protected Void doInBackground(Void... voids) {

                try {

                    org.jsoup.nodes.Document doc = Jsoup.connect(URL).timeout(30 * 1000).get();

                    duyuru = doc.select("td a");

                    for (int i = 0; i < duyuru.size(); i++) {

                        ar.add(duyuru.get(i).text());
                    }


                } catch (IOException e) {
                    e.printStackTrace();
                }


                return null;
            }
        }


    }

 

220 Görüntülenme

4 Cevap

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

Profile picture for user eyp.ondr.96
eyp.ondr.96
12.03.2018 - 02:48
Hocam linki inceledim veri gelmesi lazım çünkü projeye ilk başladığımda bu uygulamanın kodlarının aynısı doğru bi şekilde tek.actvitymain içinde adaptere set ederken çalışıyordu ve gayet sağlıklı bir şekilde veriyi elde ediyordum listviewin içi doluyordu tab menülü bir uygulamaya geçeyim dedim burda kodu çalıştıırmaya kalktım sonuç bu ,attığınız koduda çalıştırdım aynı hata devam etmekte.Nedenini hala çözemedim.
Harun KÖR
12.03.2018 - 03:28
Lütfen projeyi bana mail atar mısınız ? Projede neyi amaçlıyorsunuz ? Bir inceleyeyim. harunkor@gmail.com
picture-3240-1455469375.png
harunkor
12.03.2018 - 09:45

Merhaba Eyüp, 

Ekte txt içinde olan düzenlemeleri inceler misin? 

 

iyi çalışmalar...

https://gelecegiyazanlar.turkcell.com.tr/sites/default/files/tab1duyuru.java_.txt

 

/sites/default/files/cevaplar/dosya/2020/file-tab1duyuru.java_.txt
Profile picture for user eyp.ondr.96
eyp.ondr.96
10.03.2018 - 09:13
Hocam dediğinizi yaptım hata oluşmadı uygulama çalışıyor ama listviewde ekrana gelmedi ve içi dolmadıda.
picture-3240-1455469375.png
harunkor
10.03.2018 - 01:07

new VeriGetir().execute(); //bu satırı alalım.

lv.setAdapter(adapter); // bu satırıda alalım

return rootView bir satır öncesin aşağıdaki kod bloğunu ekleyelim.

 try {
      new VeriGetir().execute();   
     }
 catch (Exception e) 
     {      
     } 
finally 
    {
            
       lv.setAdapter(adapter);    
        
    }