2013-10-09 55 views
0

我想創建一個自定義列表視圖,但是當我運行它,它有例外,打破:我的自定義列表視圖不起作用

logcat的:
logcat screen

的onCreate方法:

ListView list = (ListView) findViewById(android.R.id.list); 
    String items[] = {"cat", "dog", "horse", "monkey"}; 

    list.setAdapter(new myAdapter(items)); 

myAdapter類:

private class myAdapter extends ArrayAdapter<String>{ 

    private String items[]; 
    public myAdapter(String items[]) { 
     super(ListViewExample.this, R.layout.row, items); 
     this.items = items; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = getLayoutInflater(); 
     View view = inflater.inflate(R.layout.row, parent); 
     TextView label=(TextView)view.findViewById(R.id.row_textView1); 
     label.setText(items[position]); 
     return view; 
    } 

} 

我的主要活動:

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 

</ListView> 

而且我的模板行:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/row_textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 

我怎樣才能解決這個問題?謝謝

+0

使用converView而不是觀點,並循着 – Raghunandan

回答

3

您在填充行時忘記將第三個參數(attachToRoot)設置爲false。

試試這個:

View view = inflater.inflate(R.layout.row, parent, false); 

它甚至會更好重新使用convertView(如果可用):

View view = convertView; 
if (convertView == null) { 
    view = inflater.inflate(R.layout.row, parent, false); 
} 
+0

工作,謝謝! :) –

1

虛增您的看法一樣:

View view = inflater.inflate(R.layout.row, parent,false); 

AttachToRoot (第三個論據):膨脹的層次結構是否應該是att痛苦的根參數?如果爲假,根僅用於創建的LayoutParams的正確子根視圖中的XML

+0

感謝您的回答 –

0

膨脹這樣

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view = inflater.inflate(R.layout.row, null);