2

XML からカスタム レイアウトをインフレートする方法は知っていますが、カスタム コンポーネントを ArrayAdapter にインフレートするにはどうすればよいですか?

ここに私のコンポーネントがあります:

public class MyComponent extends LinearLayout
{

    private EditText mText;
    private ImageView mImage;

    public MyComponent(Context context, AttributeSet attrs)
    {
        super(context, attrs);

        View.inflate(context, R.layout.cell_layout, this);
    }

    private void initComponent(){
        mText = (EditText) findViewById(R.id.lats_field);
        mImage = (ImageView) findViewById(R.id.flag_img);
    }

    public EditText getText()
    {
        return mText;
    }

    public void setText(EditText mText)
    {
        this.mText = mText;
    }

    public ImageView getImage()
    {
        return mImage;
    }

    public void setImage(ImageView mImage)
    {
        this.mImage = mImage;
    }
}

そして、ArrayAdapter を使用して ListView に追加したいと思います。どうすればいいですか?

4

1 に答える 1

1

xml を作成し、その中に MyComponent を配置します。

<com.package.MyComponent
     android:layout_with="fill_parent"
     android:layout_heigth="wrap_content"
 />

ArrayAdapter から getView をオーバーライドし、convertView が null の場合は、このレイアウトを拡張して convertView に割り当てます。それ以外の場合は、 Context のみをパラメーターとして受け取る LinearLayout のコンストラクターを定義できます。 getView 内で、 convertView が null の場合は、

convertView = new MyComponent(mContext);
于 2013-06-15T09:12:35.870 に答える