2010-12-21 47 views
1

我有一個ListView,並且我希望它的前兩個條目與其他條目不同。沒有什麼奇特的,我希望他們都只是文本瀏覽。但前兩項需要與其他項目不同的尺寸和重量。我嘗試修改ArrayAdapter類,如下所示:風格第一2在Android ListView中的TextViews不同

private class BusStopAdapter<T> extends ArrayAdapter<T>{ 

    public BusStopAdapter( 
    Context context, int textViewResourceId, 
    List<T> objects) 
    { 
    super(context, textViewResourceId, objects); 
    } 

    public View getView(int position, View convertView, 
    ViewGroup parent) 
    { 
    TextView toReturn = 
     (TextView)super.getView(position, convertView, parent); 
    if(position == 0){ 
    toReturn.setTextSize(12); 
    toReturn.setText("Previous Bus: " + toReturn.getText()); 
    toReturn.setPadding(0,0,0,0); 
    } 
    else if(position == 1){ 
     toReturn.setTextSize(20); 
     toReturn.setPadding(
     toReturn.getPaddingLeft(), 
     0, 
     toReturn.getPaddingRight(), 
     0 
    ); 
     toReturn.setText("Next Bus: " + toReturn.getText()); 
     toReturn.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP); 
    } 
    return toReturn; 
    } 

} 

但是這無意中導致一些其他textviews承擔這些特殊屬性。我認爲這是因爲導致textviews在AbsListAdapter類中被「回收」。

回答

1

嘗試這樣的:

if(position == 0){ 
    toReturn.setTextSize(12); 
    toReturn.setText("Previous Bus: " + toReturn.getText()); 
    toReturn.setPadding(0,0,0,0); 
    } 
    else if(position == 1){ 
     toReturn.setTextSize(20); 
     toReturn.setPadding(
     toReturn.getPaddingLeft(), 
     0, 
     toReturn.getPaddingRight(), 
     0 
    ); 
    else 
     style it normally or whatever you want......... 
+0

真棒。那樣做了。我正在考慮這樣做,但我認爲super.getView應該工作。可能不會。 – 2010-12-21 05:47:22

+0

不錯......................... – viv 2010-12-21 05:57:51