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;
}
}
9
Görüntülenme
0 Beğeni