2011-02-15 3 views
7

아래 클래스에서 textviews/buttons/spinners 및 구문 분석 된 데이터가 포함 된 ListView를 표시하려고합니다. 그러나 listview/adapter/addview는 약간의 문제를 일으키고 있습니다. Heres는 오류 내가 갖는 :AdapterView 및 addView 관련 문제

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

나는 내 xml 파일와 함께 할 그 느낌했지만, 임 너무 확실하지 않다.

<?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 간단한 텍스트 뷰입니다 :

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); 
    }  
} 

내 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을 다음은 내 코드입니다.

편집 :

좋아 그래서 일부 파일을 업데이트 필자 내가 런타임 예외 오류 받고 있어요 : 여기에

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

를 업데이트 된 파일 :

클래스 :

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); 
    }  
} 

내 통계 화면 레이아웃 stil ha

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

그런 다음 내 다른 두 개의 레이아웃은 간단한 텍스트 뷰 (xmldatarow), 그리고리스트 뷰 (XMLLayout이) :의 등 textviews과은 LinearLayouts의 모든 나는 그것으로부터이 삭제. 그래서 명확히하기 위해, 내 목록 화면에는 목록보기 또는 '포함'이 없습니다.

어떤 조언이 필요합니까? 감사합니다

답변

11

보기를 직접 목록보기로 확장 할 수 없습니다. 나는 ListViewaddHeaderView 또는 addFooterView 방법을 찾고있을 것이라고 생각합니다. setListAdapter에 전화하기 전에 전화하십시오.

편집 : 완전히 밖으로 철자하는 방법 : 당신이 당신의 목록의 상단에 statsviewlayout를 원 가정하면 : (ListViews 아이를 가질 안)에 ​​ListView 요소에 직접 LinearLayout을 넣지 마십시오. 별도의 XML 파일 (예를 들어, statsview.xml)에 넣어 당신의에서 onCreate에서 같은 것을 할 :

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

는 또한이 오래된 android-beginners post를 참조하십시오.

+0

조금만 확장 해 주시겠습니까? 감사합니다 – mmmbaileys

+0

물론입니다. 그에 따라 편집 됨. –

+0

감사합니다, 거기에 편집 내 게시물을 업데이 트했습니다. 다른 모습을 보여줄 수 있습니까? 고마워요! – mmmbaileys