2

我有一個自定義ArrayAdapter設置爲listView。在listView的每個元素中,我都有一個匹配我創建的.xml的項目。如下圖所示代碼:編輯列表查看內容 - Android

listContent.xml

<RelativeLayout 
[... some code ommited] 
    <ImageView 
    [...] 
    <TextView 
    android:id="@+id/listViewText" 
    [...] 

自定義數組適配器getView(INT位置,查看convertView,ViewGroup以及母公司)

if (position < 4) 
{ 
    convertView = inflater.inflate(R.layout.listContent,null); 

    TextView tv = (TextView) findViewById(R.id.listViewText); 

    tv.setTextSize(18); 
    if (position == 0) tv.setText("0"); 
    else if (position == 1) tv.setText("1"); 
    else if (position == 2) tv.setText("2"); 
    else if (position == 3) tv.setText("3"); 

    return convertView; 
} 
return null; 

我似乎無法得到這工作,我總是得到一些錯誤。我需要做什麼才能編輯我的listView項目中的TextView

+0

定義'有些錯誤',併發布相關的堆棧跟蹤。另外,使用convertView.findById,因爲findById沒有爲ArrayAdapter定義。 – njzk2

回答

1

更改您的自定義數組適配器getView代碼:

@Override 
public View getView(int position, View convertView, ViewGroup parent){ 

View row = convertView; 

if(row==null){ 
    LayoutInflater inflater=getLayoutInflater(); 
    row=inflater.inflate(R.layout.listContent, parent, false); 
} 

TextView tv=(TextView)row.findViewById(R.id.listViewText); 


tv.setTextSize(18); 
    if (position == 0) tv.setText("0"); 
    else if (position == 1) tv.setText("1"); 
    else if (position == 2) tv.setText("2"); 
    else if (position == 3) tv.setText("3"); 

return row; 
} 
+0

這個月是怎麼回事? – njzk2

+0

@ njzk2:只是根據用戶代碼錯誤地更改代碼 –

+1

謝謝,這工作得很好 –

1

變化

TextView tv = (TextView) findViewById(R.id.listViewText); 

TextView tv = (TextView) convertView.findViewById(R.id.listViewText); 

,並刪除該

if (position < 4) 
+0

從'convertView'查找ID工作。在這種情況下'(位置<4)'指的是別的不相關的東西,但我需要它。 :P –

+1

如果你的getView將有這行if(position <4),並且如果你的listView將有超過4個項目,你將有NullPointerException,因爲convertView不能爲NULL。 – prozhyga

+0

是的,你是對的,但現在我只有4個項目在我的列表中(它是靜態的),後來我會添加更多的項目,但它們會與上面的不同,所以這就是'if'。 –