0

カスタム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)は、カスタムのRelativeLayoutであるRectangleを返す必要があります。手伝ってくれませんか?

java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams

編集:

私はすでに次のようなカスタムRelativeLayoutを持っています:

そして、getViewで、配列リストにあるこれらの長方形の1つを取得します。これは正しくありませんか?

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);
}
4

1 に答える 1

0

getItem()を呼び出してRelativeLayoutを作成しないでください。代わりに、XMLレイアウトを拡張するか、RelativeLayoutをプログラムで作成する必要があります。getView()でプログラムでビューを作成する方法の例については、 GridViewチュートリアルを参照してください。このstackoverflowの回答には、getView()でリソースを膨らませる例があります。

于 2012-04-09T19:33:29.767 に答える