Soru & Cevap

Spinner Kullanarak Listview Filtreleme

05.02.2016 - 02:41

Merhaba, sqlite kullanarak bir adet ana tablo ve buna bağlı bir adette alt tablo oluşturdum.

Ana kategorileri spinner'a, alt kategorileri ise listview'e yansıtıyorum. Fakat filtreleme yapamıyorum. Spinner'da ne seçersem seçeyim listview'de tüm alt kategoriyi listeliyor. Ben istiyorumki spinner'da Ana kategoriden seçtiğim ögeye göre listviewde ona bağlı olarak daralsın ve sadece o ana kategorinin bileşenlerini göstersin. Nasıl bir yol izlemeliyim?

 

61 Görüntülenme

3 Cevap

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

picture-62423-1460561213.jpg
emre.tsbs
06.02.2016 - 03:16

rawQuery metoduyla oluşturdum sorguyu ve WHERE komutunu kullanıyorum. Ana kategori ve alt kategorilerin id'lerinide alabiliyorum. Geriye sadece filtreleme kaldı. Eğer bakmak isterseniz kodları paylaşayım. emre.tsbs@gmail.com ordan paylaşayım tüm kodları.

Profile picture for user gürcanataman
gürcanataman
06.02.2016 - 09:19

Spineri doldurmaktan bahsetmemiştim. Spinerden herhangi bir anakategori seçtiğiniz anda bu anakategorinin idini alabilmeniz gerekiyor. Mesela spineri seçtiğiniz anda bir toast mesajı ile seçtiğiniz anakategorinin idini alabiliyor musunuz bu önemli. Eğer bunu da yaptıysanız tek sıkıntı veritabanındaki filtreleme kalıyor. Oluşturduğunuz sorguyu ne şekilde yaptınız bilmiyorum ancak query metoduyla çektiyseniz :

Cursor c=db.query(TABLO_ADI, anakat_sutunlar, null, null, null, null, null);

değil de 

Cursor c=db.query(TABLO_ADI, anakat_sutunlar, ANAKATEGORI_ID + "=" + anakat_id, null, null, null, null);

şeklinde çekmelisiniz.

Eğer rawQuery metoduyla sorgu oluşturduysanız  tablo isminden sonra WHERE komutunu kullanmalısınız.

Dediğim gibi hangi aşamada olduğunuzu tam olarak bilmiyorum. Bu nedenle yardıma ihtiyacınız olan kısım konusunda tahmini bilgi veriyorum. Yaptığınız kısımlar hakkında da bilgi veriyor olabilirim.Kodları görmeden söyleyebileceklerim bu kadar.

 

 

 

Profile picture for user gürcanataman
gürcanataman
05.02.2016 - 06:14

Merhaba daha önce ben de çok uğraşmıştım ben şu şekilde yaptım.Siz şu an hangi aşamadasınız bilmiyorum. 

Anatablonun idlerini içine atacak bir liste tanımlayın:

List<Integer> anakategori_idleri = new ArrayList<Integer>();

gibi daha sonra for döngüsüyle veritabanından çektiğiniz anatablo idlerini doldurun

anakategori_idleri.add(ana_id);


Daha sonra da spinnere override ettiğiniz setOnItemSelectedListener içindeki aşağıdaki metodun içerisinde seçtiğiniz anakategorinin idine pozisyona göre ulaşabilirsiniz.

       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                anakategori_idleri.get(position);

            }

şeklinde seçtiğiniz kategorinin id numarasını almış olursunuz.
Bundan sonrası veritabanından verileri çektiğiniz listeyi bu ide göre çekmek işlemi kalacak dediğim gibi kodlarınızı göremediğim için ancak bu kadar yardımcı olabildim. Veritabanından listelediğiniz metodu ve spinneri doldurduğunuz bölümlerdeki kodları eklerseniz daha iyi yardımcı olabilirim.

Emre Taşbaş
05.02.2016 - 11:09
Merhaba, cevap için teşekkür ederim. Sanırım bu bahsettiğiniz ana kategori id'lerini spinner'a göndermek için gereken yöntem. Kodlardan okuyabildiğim kadarıyla öyle fakat ben spinner'a gönderiyorum zaten onda sorun yok. Hatta alt id'leride bir listview'e gönderiyorum oda çalışıyor. Sorun şu ki; Spinner'dan seçtiğim ana id'ye göre sadece kendine bağlı alt id'leri listview'e yansıtsın. Yani bir nevi daraltma yada filtreleme gibi bir şey. Eğer yinede yanılıyorsam bildirin, kodlarıda paylaşayım. Çünkü şuan yaptığım işlemin bir benzeri gibi görünüyor yukarıda anlattıklarınız.
Emre Taşbaş
09.02.2016 - 01:38
Yardımlarınız için teşekkürler, şuan sorunsuz çalışıyor.