2015-09-28 89 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

相关问题