2011-02-15 24 views
7

Aşağıdaki sınıfın bazı metin görünümlerini/düğmeleri/eğiricileri ve ayrıca ayrıştırılmış veri içeren bir ListView görüntülemesini istiyorum. Ancak, liste görünümü/bağdaştırıcı/addview bazı sorunlara neden oluyor. İşte hata alıyorum:AdapterView ve addView ile ilgili Sorunlar

java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView

Ben benim xml dosyaları ile hususta kendi duygu, ama Im çok emin değil.

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <ListView android:id="@+id/xmllist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
    </LinearLayout> 

xmldatarow basit TextView'un geçerli:

public class StatisticsScreen extends ListActivity{ 

private List<Message> messages; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.statisticsscreen); 

    loadFeed(); 

    //other textviews and listeners added 
} 

private void loadFeed() { 

    try{ 
     BaseFeedParser parser = new BaseFeedParser(); 
     messages = parser.parse(); 
     List<String> titles = new ArrayList<String>(messages.size()); 
     for (Message msg : messages){ 
      titles.add(msg.getTitle()); 
     } 
     ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this, R.layout.xmldatarow,titles); 

     this.setListAdapter(adapter);   
    } catch (Throwable t){ 
     Log.e("AndroidNews",t.getMessage(),t); 
    }  
} 

Benim statisticsscreen xml:

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 

<LinearLayout android:id="@+id/statsviewlayout" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/black"> 
    //other layouts/textviews/buttons added 
    <include layout="@layout/xmllayout" android:id="@+id/xmllist" /> 

</LinearLayout> 
</ListView> 

xmllayout xml İşte benim kod.

DÜZENLEME:

Ok bu yüzden bazı dosyaların güncellenmiş ive ve ben bir çalışma zamanı istisnası hatayı alıyorum: edilir burada

Your content must have a ListView whose attribute is 'android.R.id.list'

güncellenen dosyalar:

sınıfı:

setContentView(R.layout.statisticsscreen);  
loadFeed();   
getListView().addHeaderView(View.inflate(this, R.layout.xmllayout, null)); 

private void loadFeed() { 
    try{ 
     BaseFeedParser parser = new BaseFeedParser(); 
     messages = parser.parse(); 
     List<String> titles = new ArrayList<String>(messages.size()); 
     for (Message msg : messages){ 
      titles.add(msg.getDate()); 
     } 
     ArrayAdapter<String> adapter = 
      new ArrayAdapter<String>(this, R.layout.xmldatarow,titles); 
     this.setListAdapter(adapter); 
    } catch (Throwable t){ 
     Log.e("AndroidNews",t.getMessage(),t); 
    }  
} 

İstatistiğim göster

<include layout="@layout/xmllayout" android:id="@+id/xmllist" /> 

Sonra diğer iki düzenleri basit TextView'un (xmldatarow), ve bir liste görünümü (xmllayout): s vb TextView'lar ile linearlayouts tüm ve ondan bu silindi. Sadece açıklığa kavuşturmak için, statsscreenlayout'umda herhangi bir liste görünümü veya herhangi bir 'include' yoktur.

Herhangi bir öneri? Teşekkürler

cevap

11

Görünümleri doğrudan böyle bir liste görünümünde şişiremezsiniz. ListView'un addHeaderView veya addFooterView yöntemlerini aradığınızı düşünüyorum. setListAdapter'u aramadan önce onları aramayı unutmayın.

DÜZENLEME: Tam Hecelemeli için: Eğer listenin en başında statsviewlayout istediğini varsayarak: (ListViews çocuk sahibi olmamalıdır) ListView elemanı doğrudan LinearLayout koymayın. Bir ayrı xml dosyası (diyelim ki, statsview.xml) koy ve onCreate içinde böyle bir şey yapmak:

getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null)); 

Ayrıca bu eski android-beginners post bakın.

+0

Bu konuda biraz genişletebilir misiniz lütfen? teşekkürler – mmmbaileys

+0

Elbette. Buna göre düzenlenmiştir. –

+0

Teşekkürler, yayınımı orada bir düzenleme ile güncelledim. Başka bir gözün var mı? Çok teşekkürler! – mmmbaileys