0

我目前正在Adapter使用从 XML 膨胀的视图填充启动时

private void addView(Context context) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.deal_tile, this, null);
    mViews.add(view);
}

但是,我发现将视图存储在列表中AdapterView会导致这些视图中的控件出现问题,因此我想改用Adapter#getView(int position, View recycle, ViewGroup container).

出于这个原因,我想使用自定义视图类,以便if(recycle!=null && recycle instanceof CustomView)在将其重新填充到适配器中之前进行完整性检查()。但是,我不知道您如何从 XML 扩展自定义视图类。我可以了解如何膨胀视图添加到自定义视图,我可以了解如何将自定义视图插入 XML 布局等,显然我很高兴直接使用 膨胀这些东西LayoutInflater,但我找不到生成自定义视图本身的等效项。我想重用已有的 XML;因此,我不想直接对元素(以及它们的外观)进行编程。

4

1 回答 1

0

我用它来创建自己的幻灯片库,我认为它会有所帮助。

    LinearLayout internalWrapper = new LinearLayout(getContext());
    internalWrapper.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
    addView(internalWrapper);
    this.mItems = items;
    LinearLayout generalLayout = new LinearLayout(this.getContext());

    generalLayout = (LinearLayout) View.inflate(this.getContext(), R.layout.galleryrow, null);

    // inside linear layout
    LinearLayout generalLinear = (LinearLayout) generalLayout.findViewById(R.id.rowgenerallin);
    // set height & width to the LINEAR
    generalLinear.setLayoutParams(new LayoutParams(reference_width, reference_height));

    ImageView ivl = (ImageView) generalLayout.findViewById(R.id.arrow_left);
    ImageView ivr = (ImageView) generalLayout.findViewById(R.id.arrow_right);
    internalWrapper.addView(generalLayout);

在我的情况下,R.layout.gallery_row包含我要管理的两个图像,由 a 嵌套,内部包装器是在活动的主布局中声明LinearLayous (rowgenerllin)的空。LinearLayout仔细检查 LayoutParams 代码,否则你会得到一个很大的 NULL :)

干杯!

于 2012-11-19T12:43:20.793 回答