SORU
12 NİSAN 2010, PAZARTESİ


Android: bir ListActivity üstüne statik üstbilgi Ekleme

Şu anda ListActivity sınıfını genişleten bir sınıf var. Her zaman görünen yukarıdaki listeden birkaç statik düğmeleri eklemek mümkün olmak istiyorum. Liste Görünümü kapmak için getListView kullanmaya çalıştık() sınıfı içinde Sonra addHeaderView(Görünüm) ekranın üst kısmında küçük bir düzen eklemek için kullanılır.

Header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <Button 
        android:id="@ id/testButton"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:text="Income" 
        android:textSize="15dip"
        android:layout_weight="1" />
</LinearLayout>

Adaptör ayarladım önce.

ListView lv = getListView();
lv.addHeaderView(findViewById(R.layout.header));

Bu hiçbir şey için başka bir liste Görünümü için benim veritabanından doldurulan oluyor sonuçlar. Düğme üzerinde görünür.

Denedim başka bir yaklaşım Liste Görünümü üst dolgu ekleme gibi. Ben ne zaman bu başarılı olursa, yukarıda, liste Görünümü üzerinde itti herhangi ekledim, ancak taşındı. Ne yaparsam yapayım ben ListActivity kullandım veya liste Görünümü yukarıda birkaç buton koymak gibi görünüyor.

Şimdiden teşekkürler.

synic, önerinizi daha önce denedim. Yine sadece aklı uğruna çalıştım, ve düğme görüntü vermedi. Aşağıda düzen etkinlik için dosya ve oncreate uygulanan ettiğim kod().

//Benim listactivity başlık eklemek için çalışıyorum

public class AuditActivity extends ListActivity {

    Budget budget;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Cursor test;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.audit);
        ListView lv = getListView();
        LayoutInflater infalter = getLayoutInflater();
        ViewGroup header = (ViewGroup) infalter.inflate(R.layout.header, lv, false);
        lv.addHeaderView(header);
        budget = new Budget(this);
        /*
        try {
            test = budget.getTransactions();
            showEvents(test);
        } finally {

        }
        */
//      switchTabSpecial();
    }

Etkinlik için Layout.xml :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <ListView android:id="@android:id/list" android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView android:id="@android:id/empty" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="@string/empty" />
</LinearLayout>

CEVAP
12 NİSAN 2010, PAZARTESİ


findViewById() tek nesne Görünümü subviews bulmaya çalışır. Düzeni kimliği üzerinde çalışmaz.

Düzen inflater karşılık gelen bileşenleri Görüntülemek için xml dönüştürmek için kullanmak zorundasın. Şöyle bir şey:

ListView lv = getListView();
LayoutInflater inflater = getLayoutInflater();
View header = inflater.inflate(R.layout.header, lv, false);
lv.addHeaderView(header, null, false);

Kodunuzu sadece bir hata atma değildi neden emin değilim. findViewById() muhtemelen böyle bir başlık listenize eklendi null ve çok dönüyordu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Need for Speed

    Need for Spe

    8 ŞUBAT 2006
  • schmittastic

    schmittastic

    9 EYLÜL 2009
  • Wronchi Animation

    Wronchi Anim

    9 Mayıs 2011