Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Listview Hatası
#1
Merhaba, android de listview ImageListItemBottomDetail modunda (appearance) modunda resim, text ve detail alanlarına veri ekleyerek listeleme yapıyorum. Uygulamaya resimleri Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol adreste bulunan örneği kullanarak yüklüyorum.

Buraya kadar herşey tamam. 

Ancak uygulama windowsta sorunsuz çalışırken android de text veya detail alanlarına eklenen cümlelerin kelimelerini dağıtıyor. Bazı harfler büyüyor, bazıları küçülüyor veya bazılarının bir kısmı gözülmüyor. Örneğin harfin üst kısmı yok.

Listview de text veya detail alanlarının özelliklerinde hiç bir işlem yapmıyorum. Font, size vs. ama yine de bu hatayı alıyorum.

Hata resmi : Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 

Ne yaptıysam sorunu çözemedim. 

Listviewe veri yüklediğim kodum

procedure Tortak_fonksiyonlar.ilan_listesi_Yukleme_islemi(arama_turu : string;uyeid : string;kategori : string) ;
var
aTask: ITask;
aobj: ISuperArray;
obj2: ISuperObject;
mkl: Integer;
LItem: TListViewItem;
S,web_servis_string,birlesik_resim_yolu: String;
INIDosya : TIniFile;
data_id,data_book_id,data_ilan_adi, data_ilan_resim1,data_yayin_yili,data_yayin_yeri,data_dili,data_konu,data_toplam_sayfa_sayisi,data_konu_detay,data_yazari,data_yayin_evi : string;
begin
aTask := TTask.Create(
procedure
begin

Form_kitap_listesi.ListView1.BeginUpdate;

web_servis_string:='WEB SERVİS ADRESİ';

 with TIdHTTP.Create do
begin
  try
    S := Get(web_servis_string);
  finally
    Disconnect;
    DisposeOf;
  end;
end;

 aobj := SA(S);

 mkl:=0;
  while mkl <= aobj.Length-1 do
   begin
     obj2 := aobj.O[mkl];

  if GetJsonValue(obj2,'durum')='Yok' then
    begin

   Form_kitap_listesi.baslik.Text:='Kitap Listesi';
   ilan_yukleme_durumu:='Tamam';

   end
   else
   begin

  data_id:=GetJsonValue(obj2,'id');
  data_book_id:=GetJsonValue(obj2,'BookId');
  data_ilan_adi:=GetJsonValue(obj2,'Name');
  data_yazari:=GetJsonValue(obj2,'yazar');
  data_yayin_yeri:=GetJsonValue(obj2,'yayinyeri');
  data_ilan_sayisi:=StrToInt(GetJsonValue(obj2,'ilan_sayisi'));
  data_ilan_resim1:=GetJsonValue(obj2,'FrontCover');
   
   if (data_ilan_resim1<>'') then
 begin
   birlesik_resim_yolu:='http://www.com/resim_kucultme.php?file='+data_ilan_resim1;
   //birlesik_resim_yolu:='http://icons.iconarchive.com/icons/paomedia/small-n-flat/256/book-icon.png';
 end
 else
 begin
   birlesik_resim_yolu:='http://www.com/images/resim_yok.png';
 end;

  LItem := Form_kitap_listesi.ListView1.Items.Add;
  LItem.ImageIndex := ilan_baslangic_degeri;
  LItem.Text:=data_ilan_adi;
  LItem.Detail:=data_yazari+#13#10+data_yayin_yeri;
  LItem.Data['0']:=data_toplam_sayfa_sayisi;
  LItem.Data['1']:=data_book_id;
  LItem.Data['2']:=data_id;

 setLogo(Form_kitap_listesi.ListView1, birlesik_resim_yolu, ilan_baslangic_degeri);
  end;
  globan_nesne_sayisi:=globan_nesne_sayisi+1;
  ilan_baslangic_degeri:=ilan_baslangic_degeri+1;

  mkl:=mkl+1;
  obj2.Next;

end;

 if obj2.GetEoF=False then
   begin   
   ilan_yukleme_durumu:='Tamam';

    Form_kitap_listesi.ListView1.EndUpdate;
    Form_kitap_listesi.ListView1.EndUpdate;
 
end);

aTask.Start;

end;


Resim Yüklediğim kod
procedure Tortak_fonksiyonlar.setLogo(ListView: TListView; url: string; id: Integer);
var
 T: TThread;
begin
  T := TThread.CreateAnonymousThread(
  procedure
  var
    HTTP: TIdHTTP;
    MS: TMemoryStream;
  begin
    MS := TMemoryStream.Create;
    HTTP := TIdHTTP.Create(nil);
    try
      try
        HTTP.Get(url, MS);
        TThread.Synchronize(TThread.CurrentThread,
          procedure()
          begin
           ListView.Items[id].Bitmap.LoadFromStream(MS);
          end);
      except
        MS.Free;
      end;
    finally
      HTTP.Free;
    end;
  end);
  T.start;
end;


Sizden ricam, bu sorunu çözmeme yardım ederseniz size minnettar kalırım.
Cevapla
#2
Merhaba,
Eklenmiş olduğunuz resimde hata olarak tabir etmiş olduğunuz ve işaretlediğiniz kısımlarda, yalnızca r harflerinin aşağıya kaydığı görünüyor. 
Kodlarınızda karakterleri etkileyecek bir direktif de göremedim.
Bu durumda akla gelen tek bir şey var; 
O alanın karakter seti ile ilgili bir sorun olabileceğidir.

Çözüm için aşağıdaki gibi birkaç yöntem deneyebilirsiniz.
1- Kitap yazarı text'ini silin ve yeniden oluşturun. Böylece tasarım ve TText property'lerinden kaynaklanan bir sorun varsa düzelmiş olur.
2- Kitap yazarı alanında göstermiş olduğunuz veriyi karşı sunucudan aldıktan sonra Encoding ile UTF8 veya benzeri bir karakter setine dönüştürerek, kullanın.
3- Zor bir ihtimal yine de denemekte fayda var; o alanda varsayılan font tipinin değiştirilmesi.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Teşekkürler hocam hemen deneyeceğim

Hocam muhtemel hata sizin 2. seçenekte belirttiğiniz karakter set hatası ama UTF8 yaparak sorunu çözemedim. Ancak aşağıdaki kod işimi gördü gibi. Bir kaç yük defa daha test edip sonuca bakacağım. İlginiz için teşekkürler.

procedure TForm_kitap_listesi.FormResize(Sender: TObject);
begin
ListView1.BeginUpdate;
ListView1.ItemAppearanceObjects.ItemObjects.Text.Width:=ListView1.Width-114;
ListView1.ItemAppearanceObjects.ItemObjects.Detail.Width:=ListView1.Width-114;
ListView1.EndUpdate;
end;
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Listview insert Dostk 2 75 13-07-2018, Saat: 15:50
Son Yorum: ssahinoglu
  Listview Item Merge narkotik 2 85 23-06-2018, Saat: 12:56
Son Yorum: narkotik
  Emulatorde INSTALL_FAILED_NO_MATCHING_ABIS hatası ybelen 11 398 10-06-2018, Saat: 18:04
Son Yorum: ybelen
  26 api dosya acma hatasi codder71 0 90 23-05-2018, Saat: 22:36
Son Yorum: codder71
Question Listview Edit Ekleme ve Button Yüksekliği Ayarı elixir84 11 375 22-05-2018, Saat: 21:51
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi