Soru & Cevap

Slider Menu Fragmentları İçine Json Veri Çekmek ...

04.08.2016 - 01:03

Merhaba, sliding menu içerisindeki fragmentlara Json veri çekmek istiyorum fakat hata alıyorum. Normal de çekebiliyorum datayı fakat işin içine fragment girince aynı kodlar log da hata vermiyor ancak uygulama kendini durduruyor.

Fragment içine nasıl verileri çekebilirim? Teşekkürler

public class DahiliyeFragment extends Fragment {


    public DahiliyeFragment() {
        // Required empty public constructor
    }
    private ListView lvPersonel;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


    new JSONTask().execute("https://api.myjson.com/bins/4hopr");

    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( getActivity()).defaultDisplayImageOptions(defaultOptions)
            .build();
    ImageLoader.getInstance().init(config); // Do it on Application start

    lvPersonel = (ListView) getView().findViewById(R.id.lvPersonel);


        return inflater.inflate(R.layout.fragment_dahiliye, container, false);
    }



public class JSONTask extends AsyncTask<String,String,List<PersonelModel>>
{

    @Override
    protected List<PersonelModel> doInBackground(String... params) {


        HttpURLConnection connection = null;
        BufferedReader reader=null;
        InputStream stream;
        StringBuffer buffer;
        try {
            URL url = new URL(params[0]); //bağlantı
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();

            stream = connection.getInputStream();
            reader = new BufferedReader(new InputStreamReader(stream)); //okuma yapıyor
            buffer = new StringBuffer();
            String line = "";
            while ((line = reader.readLine()) != null)
            {
                buffer.append(line);

            }

            String finalJson = buffer.toString();
            JSONObject parentObject = new JSONObject(finalJson);

            JSONArray parentArray = parentObject.getJSONArray("personeller"); // json dizisini alır
            //StringBuffer finalBufferedData = new StringBuffer();
            List<PersonelModel> personelModelList = new ArrayList<>(); //json içerisindeki ana dizinin tüm elemanlarını tutmak için

            for(int i=0; i<parentArray.length(); i++)

            {
                JSONObject finalobject = parentArray.getJSONObject(i); //dizinin elemanları için

                    /*String unvan = finalobject.getString("unvan");// json daki nesnenin adını tanıtarak yeni bi string nesnesi oluşturduk
                    String ad = finalobject.getString("ad");
                    String soyad = finalobject.getString("soyad");
                    String oda = finalobject.getString("oda");
                    finalBufferedData.append(unvan+ "-" +ad+ "-" +soyad+ "-"+oda+"\n");*/ //döngünün içinde aldığı her veriyi finalBufferedData nn içine yükleyecek

                PersonelModel personelModel = new PersonelModel();
                personelModel.setUnvan(finalobject.getString("unvan"));
                personelModel.setAd(finalobject.getString("ad"));
                personelModel.setSoyad(finalobject.getString("soyad"));
                personelModel.setOda(finalobject.getString("oda"));
                personelModel.setResim(finalobject.getString("resim"));




                personelModelList.add(personelModel);

                //finalBufferedData.append(movieName + "-" +year+ "\n");

            }
            //return buffer.toString(); //post execute yolluyor
            //return movieName + "-" + year;
            //return  finalBufferedData.toString();

            return personelModelList;


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        } finally {
            if(connection != null)
            {connection.disconnect();}
            try {
                if(reader != null){
                    reader.close();}
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return null;
    }



    @Override
    protected void onPostExecute(List<PersonelModel> result) {
        super.onPostExecute(result);
        // tvData.setText(result);
        // TODO need to set to the list
        PersonelAdapter adapter = new PersonelAdapter(getActivity(),R.layout.row, result);
        lvPersonel.setAdapter(adapter);

    }
}



public class PersonelAdapter extends ArrayAdapter
{
    private List<PersonelModel> personelModelList;
    private int resource;
    private LayoutInflater inflater;
    public PersonelAdapter(Context context, int resource, List<PersonelModel> objects) {
        super(context, resource, objects);
        personelModelList = objects;
        this.resource = resource;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

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

        ViewHolder holder = null;
        if(convertView == null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(resource, null);
            holder.ivResim = (ImageView)convertView.findViewById(R.id.ivResim); // row layoutunda old için convertview den aldk
            holder.tvAd = (TextView)convertView.findViewById(R.id.tvAd);
            holder.tvSoyad = (TextView)convertView.findViewById(R.id.tvSoyad);
            holder.tvOda = (TextView)convertView.findViewById(R.id.tvOda);
            holder.tvUnvan = (TextView)convertView.findViewById(R.id.tvUnvan);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }




        final ProgressBar progressBar = (ProgressBar)convertView.findViewById(R.id.progressBar);

        // Then later, when you want to display image
        ImageLoader.getInstance().displayImage("http://i.hizliresim.com/go7bpQ.jpg", holder.ivResim, new ImageLoadingListener() {
            @Override
            public void onLoadingStarted(String s, View view) {
                progressBar.setVisibility(View.VISIBLE);
            }

            @Override
            public void onLoadingFailed(String s, View view, FailReason failReason) {
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingComplete(String s, View view, Bitmap bitmap) {
                progressBar.setVisibility(View.GONE);
            }

            @Override
            public void onLoadingCancelled(String s, View view) {
                progressBar.setVisibility(View.GONE);
            }
        });



        holder.tvUnvan.setText("Unvan:   " + personelModelList.get(position).getUnvan());
        holder.tvAd.setText("Ad:  " + personelModelList.get(position).getAd());
        holder.tvSoyad.setText("Soyad:   " + personelModelList.get(position).getSoyad());
        holder.tvOda.setText("Oda:    " + personelModelList.get(position).getOda());




        return convertView;
    }
}


class ViewHolder

{

    private ImageView ivResim;
    private TextView tvAd;
    private TextView tvSoyad;
    private TextView tvOda;
    private TextView tvUnvan;

}

}

 

5 Görüntülenme

0 Cevap

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