gpt4 book ai didi

android - 获取从中膨胀 View 的资源 ID

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:47 25 4
gpt4 key购买 nike

有没有办法获取从中展开 View 的布局的资源 ID(如 R.layout.viewtoInflate)?

我正在尝试实现一个 ListView ,它为列表项使用 2 个自定义布局。使用哪种项目布局取决于用于填充 ListView 的对象中的字段。

我在我的自定义适配器中缺少的是一种方法来了解我在 getView() 中获得的“convertView”是从什么资源中膨胀的。如果我可以获得该信息,我可以比较并确定我是否可以按原样重新使用转换 View ,或者是否必须将其替换为当前项目的适当布局。

理想情况下应该是这样的:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;

JSONObject currItem = mItems.getJSONObject(position);

int layoutType;

if (currItem.getBoolean("alternate"))
layoutType = R.layout.list_item_b;
else
layoutType = R.layout.list_item_a;

if (convertView == null || <convertView.resourceID> != layoutType ) {
convertView = inflater.inflate(layoutType, null);

//Finish setting up new View and its holder
}
else {
//Get view holder for view reuse
}

//populate view with the required content

return convertView;
}

在最坏的情况下,我根本无法重复使用 View ,而是每次都扩大我需要的布局,但这似乎非常浪费。

最佳答案

有一种官方方法可以使用多个布局,只需重写getViewTypeCount()getItemViewType()。这些方法通知适配器期望多个布局,并且 convertView 将始终是合适的布局(因此不需要检查资源 ID。)请参阅 this example一些示例代码。

但是如果您想找出哪种布局是哪种布局,只需检查一个独特的特征即可。例如,您可以在仅存在于一个布局中的 View 上使用 findViewById(),然后检查它是否返回 null

关于android - 获取从中膨胀 View 的资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com