扩展的GridViewAdapter

时间:2012-04-09 18:05:58

标签: android android-layout

我已经覆盖了我的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);
}

1 个答案:

答案 0 :(得分:0)

不要调用getItem()来创建RelativeLayout。相反,您应该膨胀XML布局或以编程方式创建RelativeLayout。有关如何在getView()中以编程方式创建视图的示例,请参阅GridView tutorial。这个stackoverflow answer有一个在getView()中充气资源的例子。