Soru & Cevap

listview adapter

22.04.2016 - 04:14

custom adapter ile json formatında aldığım verileri listviewe gönderiyorum ama veriler bazen gözüküyor bazen gözükmüyor. neden olabilir?

 

public class adapterim extends BaseAdapter {

    private LayoutInflater mInflater;
    private List<etkinlik> mListe;

    public adapterim(Activity activity, List<etkinlik> etkinlikler) {

        mInflater = (LayoutInflater) activity.getSystemService(
                Context.LAYOUT_INFLATER_SERVICE);

        mListe = etkinlikler;
    }

    @Override
    public int getCount() {
        return mListe.size();
    }

    @Override
    public etkinlik getItem(int position) {

        return mListe.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        satirView = mInflater.inflate(R.layout.satir_layout, null);

        TextView baslik = (TextView) satirView.findViewById(R.id.baslik);
        TextView tarih = (TextView) satirView.findViewById(R.id.tarih);
        TextView saat = (TextView) satirView.findViewById(R.id.saat);
        TextView yer = (TextView) satirView.findViewById(R.id.yer);
        TextView puan = (TextView) satirView.findViewById(R.id.puan);


        etkinlik etkinlik = mListe.get(position);

        baslik.setText(etkinlik.getBaslik());
        tarih.setText("Tarih: "+etkinlik.getTarih());
        saat.setText("Saat: "+etkinlik.getSaatBas());
        yer.setText("Yer: "+etkinlik.getYer());
        puan.setText("Puan: "+etkinlik.getPuan());

        return satirView;
    }
}

 

 

public class EtkinlikListesi extends AppCompatActivity {

    String etkinlikUrl = "http://192.168.154.210/projeler/uyum/etkinlik_listele.php";
    RequestQueue requestQueue;
    String baslik,tarih,saat_bas,saat_bit,yer,puan;
    List<etkinlik> liste = new ArrayList<etkinlik>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.etkinlik_listesi);

        requestQueue = Volley.newRequestQueue(getApplicationContext());


                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
                        etkinlikUrl, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        try {

                            JSONArray etkinlikler = response.getJSONArray("etkinlikler");
                            for (int i = 0; i < etkinlikler.length(); i++) {
                                JSONObject etk = etkinlikler.getJSONObject(i);

                                String baslik = etk.getString("baslik");
                                String tarih = etk.getString("tarih");
                                String saat_bas = etk.getString("saat_bas").substring(0,5);
                                String saat_bit = etk.getString("saat_bit").substring(0,5);
                                String yer = etk.getString("yer");
                                String puan = etk.getString("puan");

                                etkinlik etkn = new etkinlik(baslik,tarih,saat_bas,saat_bit,yer,puan);

                                liste.add(etkn);
                                System.out.println(i+".eleman listeye eklendi");

                            }



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

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        System.out.append(error.getMessage());

                    }
                });
                requestQueue.add(jsonObjectRequest);


        final ListView listemiz = (ListView) findViewById(R.id.listView);
        adapterim adaptorumuz=new adapterim(this, liste);
        listemiz.setAdapter(adaptorumuz);

    }
}

21 Görüntülenme

6 Cevap

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

Profile picture for user kaganaydin
kaganaydin
28.04.2016 - 02:39

adapteri listviewe bağladığım kodu kesip onResonse metodunun try bloğunun sonuna yapıştrınca sorun çözüldü.

Profile picture for user kaganaydin
kaganaydin
28.04.2016 - 11:34

Request queue aslında verileri sorunsuz alıyor bunu deneyip gördüm, ama bunu listviewe göndermede sıkıntı oluyor sanırım, listview boş geliyor..

Profile picture for user kaganaydin
kaganaydin
28.04.2016 - 09:45

PHP kodu aşağıdaki şekilde, android kısmı ise yukarıda var. Normalde hata vermiyor bu şekilde ama dediğim gibi bazen çalışıyor bazen çalışmıyor. Furkan'ın dediği gibi Asynctask ile yapmaya çalışıyorum ama heniz sonuç alamadım.

 

<?php

if($_SERVER["REQUEST_METHOD"] == "POST"){
    
    require "baglanti.php";
    
    $veri = $baglanti->query("SELECT * FROM etkinlik")->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($veri as $row){
        $temp_array[] = $row;
    }
    
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode(array("etkinlikler"=>$temp_array),JSON_UNESCAPED_UNICODE);
    
    $baglanti = null;
    
}
?>

Profile picture for user Saraa
Saraa
28.04.2016 - 09:22

Merhaba 

Bende mssql den json formatında veri çekip sizin gibi listviewa aktarmaya çalışıyorum fakat hata alıyorum. PHP kodunuzu ve postclasınızı paylaşabilir misiniz.

Teşekkürler

picture-30491-1565085904.jpg
serhatleventyavas
22.04.2016 - 08:48

kodunu bir debug et ve nerede ters giden bir durum varsa onu buraya yaz dostum. 

picture-23301-1432907931.jpg
bcs_crew
22.04.2016 - 07:20

AsyncTask dene, RequestQueue sınıfı yakalayamıyor olabilir.