Listview son item görüküyor mu kontrolü

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
beklentili
Üye
Mesajlar: 86
Kayıt: 21 Ara 2013 09:05
İletişim:

Listview son item görüküyor mu kontrolü

Mesaj gönderen beklentili »

Merhaba, kolay gelsin.

Bir Android uygulama ile listview kullanmam gerekti. Veritabanındaki kayıtları parça parça listviewe yükletiyorum. Her seferinde en son kayda de "Daha fazla yükle" butonu geliyor. Buna tıklandığında bu buton silinip yerine diğer kayıtlar geliyor.

Benim yapmaya çalıştığım ise en sona "Daha fazla yükle" butonunun gelmesi yerine listview de scrolbar en sona dayandığında yükleme işlemi başlasın. Bunu yapmak mümkün müdür acaba?
[/size]http://www.componentler.com | Türkçe component sitesi
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen mrmarman »

Merhaba.

- ListView'in property listesinde PullToRefresh PullToRefreshWait özelliklerini TRUE yaptıktan sonra OnPullRefresh eventinden ilgili güncelleme procedure'ünüzü tetikleyebilirsiniz. :idea:

- Böylece ListView üzerinde listeyi aşağıya belirli bir oranda çektiğiniz zaman işlem yapılacaktır.

- Formunuzun üst kısmına bir tane de TAniIndicator eklersiniz. OnPullToRefresh olayında çalışan procedure içerisinde iki satır kod ekleyerek

Kod: Tümünü seç

    AniIndicator1.Visible := True;
    AniIndicator1.Enabled := true;
güncelleme sırasında dönen progress animasyonunu görür, işi bittiğinde de bu TRUE edilen kısımları false eder kullanıcıları bilgilendirirsiniz.
Resim
Resim ....Resim
beklentili
Üye
Mesajlar: 86
Kayıt: 21 Ara 2013 09:05
İletişim:

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen beklentili »

Hocam cevap için teşekkürler ancak benim yapmaya çalıştığım tam olarak bu değil. Söyle ki; Listview'e itemleri 9'ar 9'ar yüklüyorum. İlk dokuz item yüklendikten sonra listview scrolbar'ı en alta geldiğinde yani son item göründüğünde diğer 9 item otomatik yüklenecek. Örneğin bir facebook'taki gibi.
(Ben bu işlemi şimdilik şu şikilde yapıyorum. Listview'e yüklenen 9 item ile birlikte 1 item daha yükleyip bunu daha fazla yükle butonu olarak kullanıyorum. Bu iteme tıklandığında item siliniyor ve diğer 9 item ve yine sonuna daha fazla yükle itemi geliyor.)
[/size]http://www.componentler.com | Türkçe component sitesi
beklentili
Üye
Mesajlar: 86
Kayıt: 21 Ara 2013 09:05
İletişim:

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen beklentili »

Anladığım kadarıyla bu hususun bir çözümü yok.
[/size]http://www.componentler.com | Türkçe component sitesi
Kullanıcı avatarı
RADCoder
Üye
Mesajlar: 129
Kayıt: 21 Ara 2013 04:03

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen RADCoder »

Merhabalar, kolay gelsin..
Tabiki bu sorunun çözümü vardır. Sadece mantıklı bir yaklaşımla çözüm bulunabilir.
Listview scrol tarafını kullanacağımız için tabiki kullanacağımız işlem:

Kod: Tümünü seç

ScrollViewPos
Bu kod size scrolun bitiş noktasını gösterecektir.

Yapmanız gereken itemlerin genişliyini elde tutarak yola çıkmak.
Örnek olarak:

Kod: Tümünü seç

var
  Form1: TForm1;
  deger,
  deger2 : Integer;
  A, B : Integer;
  AItem : TListViewItem;

implementation

{$R *.fmx}

procedure CountControl;
 var
 x : Integer;
 begin with Form1 do
 begin
  for x := 0 to ListView1.Items.Count -1 do
  begin
  deger :=  x * AItem.Height;
  end;

  deger2 := AItem.Height * 5;
  B := Ceil( StrToInt( FloatToStr((deger - ListView1.Height) -  deger2)));
  Label4.Text := IntToStr(B);
 end;

 end;

procedure TForm1.FormShow(Sender: TObject);
var
  I: Integer;
begin
  deger  := 0;
  deger2 := 0;

for I := 1 to 20 do
 begin
  AItem := ListView1.Items.Add;
  AItem.Text := 'TEST '+ IntToStr(I);
  AItem.Height := 50;

  deger := I * AItem.Height;

 end;


  deger2 := AItem.Height * 5;
  B := Ceil( StrToInt( FloatToStr((deger - ListView1.Height) -  deger2)));
  Label4.Text := IntToStr(B);

end;


procedure TForm1.ListView1ScrollViewChange(Sender: TObject);
begin
 if  A > B  then
 begin
  Form1.OnShow(Sender);
  CountControl;
 end else begin
  A := Ceil( StrToInt(FloatToStr(ListView1.ScrollViewPos)));
  Label3.Text := IntToStr(A);

 end;

end;
Yukarıda vermiş olduğum kaba örneği siz kendinize göre ayarlayıp ufak bir kod şeklinde düzenleye bilirsiniz.
Umarım yardımcı olur..
Başarılar..
beklentili
Üye
Mesajlar: 86
Kayıt: 21 Ara 2013 09:05
İletişim:

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen beklentili »

RADCoder hocam cevap için teşekkür ediyorum. İlk fırsatta deneyip neticeyi burada paylaşacağım.
[/size]http://www.componentler.com | Türkçe component sitesi
beklentili
Üye
Mesajlar: 86
Kayıt: 21 Ara 2013 09:05
İletişim:

Re: Listview son item görüküyor mu kontrolü

Mesaj gönderen beklentili »

Hocam çok teşekkür ederim sorunsuzca çalıştı.
Sadece

Kod: Tümünü seç

B := Ceil( StrToInt( FloatToStr((deger - ListView1.Height) -  deger2)));
kısmını

Kod: Tümünü seç

B := Ceil( deger - ListView1.Height) -  deger2);
şeklinde değiştirdim.
[/size]http://www.componentler.com | Türkçe component sitesi
Cevapla