我已经覆盖了我的Custom BaseAdapter的getView方法,用这个填充Gridview:
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout relativeLayout;
if(convertView == null){
relativeLayout = (RelativeLayout)getItem(position);
} else{
relativeLayout = (RelativeLayout)convertView;
}
return relativeLayout;
}
但是所有的时间,我得到这个例外,我不知道为什么我得到它... getItem(position)应返回一个Rectangle,它是一个自定义RelativeLayout。 你能帮我吗?
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
编辑:
我已经有一个自定义RelativeLayout,如下所示:
在我的getView中,我得到了一个这样的矩形,我在一个arraylist后面... 这不对吗?
public class Rectangle extends RelativeLayout{
public Rectangle(Context context, int dnd_drag_button_while_dragging, String text) {
super(context);
this.context = context;
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
this.setLayoutParams(params);
ImageView image = new ImageView(context);
image.setBackgroundResource(dnd_drag_button_while_dragging);
image.setLayoutParams(params);
img = dnd_drag_button_while_dragging;
LayoutParams tParams = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
tParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
TextView textView = new TextView(context);
textView.setText(text);
textView.setLayoutParams(tParams);
this.addView(image);
this.addView(textView);
}
答案 0 :(得分:0)
不要调用getItem()来创建RelativeLayout。相反,您应该膨胀XML布局或以编程方式创建RelativeLayout。有关如何在getView()中以编程方式创建视图的示例,请参阅GridView tutorial。这个stackoverflow answer有一个在getView()中充气资源的例子。