Turkcell | Geleceği Yazanlar

Soru & Cevap

Veri çekmek için en iyi yöntem nedir?

02.03.2014 - 20:48

Merhaba, okulumuzda her gün yemek veriliyor. Ben de bu yemeklerin listesini yapıyorum. Listview şeklinde oluyor, tıklayınca yemekleri gösteriyor falan. Bu uygulamayı XML şeklinde yapmaya çalışıyorum ama beceremedim. Alternatifbir yöntem var mı? Yemekleri tek tek ben gireceğim, listview'de veriyi çekerek gözükecek.?

5773 Görüntülenme

3 Cevap

Burak Tugay Sür
14.03.2014 - 01:40

Aynı şekilde benim de bu tarz bir çalışmam mevcut ve  hiçbir sorun gözükmemesine rağmen ;
liste.setOnItemClickListener(new OnItemClickListener(){ ... Satırında

[code]The method setOnItemClickListener(AdapterView.OnItemClickListener) in the type AdapterView<ListAdapter> is not applicable for the arguments (new OnItemClickListener(){})[/code] hatası alıyorum. Acaba bilgisi olan birisi yardımcı olabilir mi?  

Teşekkür ederim şimdiden..

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Hasan Hamit
03.03.2014 - 05:36

Merhaba Furkan,
İstediğin şey küçük boyutlu olduğu için Class içerisinde de halledebilirsin.Hiç XML e girmene gerek yok aşağıya yazdığım kod işini rahat görür.Hatta biraz daha geliştirirsen daha güzel bir şey çıkartabilirsin ortaya.Ayrıca yazdığım kodlarda şöyle bir durum var:
-Ekrana bir liste gösteriyoruz ( sen buna "günler" diyebilirsin )

-Hangi güne tıklarsan o günün referansını alır, toast mesaja atar ve o gün için tanımladığın yemek menüsünü gösterir.

-Yani direk ekranın altında küçük bir mesaj gösterir.

Kodların açıklamalarını da altlarına yazdım yinede takıldığın bir yer olursa sorarsın.Kolay Gelsin

[code]

public class MainActivity extends Activity implements OnInitListener {
 

// Önce listeliceğimiz günleri tanımlarız
    public int index;
    public String [] gunler = {"03.03.2014-Perşembe","04.03.2014-Cuma","05.01.2014-Cumartesi","06.03.2014-Pazar","07.03.2014-Pazartesi","08.03.2014-Salı","09.03.2014-Çarşamba","10.03.2014-Perşembe"};

//Toast mesajda gösterilecek listeyi tanımladık    

public String [] menuler= {"çorba,birinci yemek ,ikinci yemek ve tatlı","Çorba,birinci yemek ,ikinci yemek ve tatlı","Tatil(cumartesi)","Tatil(pazar)","Çorba,birinci yemek ,ikinci yemek ve tatlı","Çorba,birinci yemek ,ikinci yemek ve tatlı","Çorba,birinci yemek ,ikinci yemek ve tatlı","Çorba,birinci yemek ,ikinci yemek ve tatlı"};
 
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
 

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
          
       //listview i tanımladık

        final ListView liste =(ListView) findViewById(R.id.List);
        
        
       
      
 //listeyi adapter e yükleyeceğimiz için adapter tanımlıyoruz ve daha önceden tanımladığımız  günler'i adapter e //yüklüyoruz
        ArrayAdapter<String> array_adapter= new ArrayAdapter<String>(this,
                                                                     android.R.layout.simple_list_item_1,
                                                                     android.R.id.text1,
                                                                     gunler);
 

//array_adapter adlı adapterimizi kullancağımızı belirtiyoruz
       liste.setAdapter(array_adapter);
 

 

//liste'deki elemanlara tıklandığında butonu dinlememiz lazım.
       liste.setOnItemClickListener(new OnItemClickListener(){
 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
           
            index= arg2;
            Toast.makeText(getApplicationContext(), menuler[index], Toast.LENGTH_LONG).show();

            //ve son olarakta menuler'i toast mesaj olarak ekrana yansıtan kodumuzu yazıyoruz.Bu kadar.

          //not:LENGTH_SHORT yazarsan toast mesaj çok kısa gösterilir.Ama en ideali, yazıların okunabilmesi              //için LONG olması daha iyi olur
        }
    });
 
      } }

[/code]

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
04.03.2014 - 00:57
Merhaba Hasan, emeğin için çok çok teşekkürler. Ben bu verileri her hafta güncelleyeceğim. Verdiğin örnekte bunu nasıl yapabilirim? MySql ile database'den çeksem olur mu acaba?
Hasan Hamit
04.03.2014 - 20:21
Evet MySql ile de yapabilirsin.Benim dediğim şekilde yaparsan aylık olarak bir sefer girersin 30 günlük menüyü.Her ay güncelleme yaparsın uygulamana.Haftalık olarakta yapabilirsin fakat biraz uğraştırıcı olur ki haftalık olarak yapcaksan database den çekmen daha mantıklı olur.O konu biraz daha farklı MySql konusunu baya bi kurcalamanda fayda var ;) Eğer Veritabanından çekersen : 1.yol Bir haftalık menüyü MySql den çekip uygulamanın hafızasına kopyalar,kullanıcı da bir sefer internete bağlanarak menüyü günceller ve 1 hafta boyunca internetsiz o menüyü görebilir.Bu yol biraz uğraştırıcı olur 2.yol ise kullanıcı menüyü anlık olarak günceller,interneti kapalı olduğunda menüyü göremez. Eğer hiç Veritabanı kullanmak istemiyorsan: manuel olarak her ay menüyü kendin eklersin (en fazla 5 dk nı alır).Hiç sunucu muhabbetleriyle uğraşmak zorunda kalmazsın ve interneti olmayan kullanıcılar da uygulamanı kullanır. Not: Zaten kullanıcının interneti varsa okulun web sitesine girip 2 dk da görebilir menüyü :) o yüzden kullanıcı çevrimdışı olarak kullanmak ister uygulamayı
Anıl SÖZERİ
02.03.2014 - 22:57

Merhaba,

Yemekleri eğer tek tek girecekseniz yani elle değer atayacaksanız bi dizi veya collection yapılarından birini kullanabilirsiniz o şekilde ListView da da görüntüleyebilirsiniz ama tabi bu yemekler sürekli değişip güncellenecekse ne derece doğru bir yöntem olur bilemiyorum. XML i daha fazla araştırıp parse işlemi yardımıyla halledebilirsiniz sanırım.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Furkan KURT
02.03.2014 - 23:19
Merhaba Anıl, cevabın için çok teşekkürler. XML Parse işlemi ile yapıyordum zaten ama hata çıkıyor. Veri her hafta değişecek, güncellenecek. Başa bir yöntem yok mu XML Parsing den başka?
Anıl SÖZERİ
03.03.2014 - 00:00
İlla ki vardır ama benim kullandığım yöntem bu olduğu için diğerlerine hakim değilim ne desem yalan olur, araştırıp incelemek lazım.

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