2015-09-28 91 views
1

我在ArrayAdapter中使用自定義視圖(RouteView),並試圖在此處使用自定義視圖,以便我可以在對象上執行一些邏輯,但出於某種原因,它似乎是不可見的!我可以與它交互,但沒有任何可見的。如何將自定義視圖膨脹爲自己?

這裏是我的RouteView類:

public class RouteView extends RelativeLayout { 

public RouteView(Context context){ 
    super(context); 
    init(); 
} 
private void init(){ 

    inflate(getContext(), R.layout.route_item, this); 
} 
public void setFrom(String fromText){ 
    TextView from = (TextView) findViewById(R.id.from); 
    from.setText(fromText); 
} 
public void setTo(String toText){ 
    TextView to = (TextView) findViewById(R.id.to); 
    to.setText(toText); 
} 
public RouteView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
protected void onLayout(boolean b, int i, int i1, int i2, int i3) { 

} 

而這裏的我是如何構建它:

private class RoutesAdapter extends ArrayAdapter{ 
    public RoutesAdapter(Context context, int resource, ArrayList<Route> objects) { 
     super(context, resource, objects); 
    } 

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

     RouteView v; 
     if(convertView == null){ 
      v = new RouteView(getContext()); 
     } else { 
      v = (RouteView) convertView; 
     } 

     Route route = (Route) getItem(position); 
     v.setFrom(route.getFrom()); 
     v.setTo(route.getTo()); 

     return v; 
    } 
} 

我的XML根元素是一個<merge>元素,這是一個RelativeLayout。有誰知道我在這裏做錯了嗎?

謝謝!

+1

你叫超在onLayout方法是什麼? –

回答

1

是爲@翠鳥福說你:

@Override 
protected void onLayout(boolean b, int i, int i1, int i2, int i3) { 

} 

嘗試調用超:

@Override 
protected void onLayout(boolean b, int i, int i1, int i2, int i3) { 
    super.onLayout(b, i, i1, i2, i3); 
    ... //your code 
} 

或不覆蓋此方法

+0

非常感謝!就是這樣 – Prodikl

相關問題