有没有办法获取视图膨胀的布局的资源 id(如 R.layout.viewtoInflate)?
我正在尝试实现一个列表视图,它使用 2 个自定义布局作为列表项。使用哪个项目布局取决于用于填充列表视图的对象中的字段。
我在自定义适配器中缺少的是一种了解我在 getView() 中获得的“convertView”是从哪个资源膨胀的方法。如果我可以获得该信息,我可以比较并确定是否可以按原样重新使用转换视图,或者是否必须将其替换为当前项目的适当布局。
所以理想情况下它会是这样的:
@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;
}
在最坏的情况下,我根本无法重用视图,只是每次都增加我需要的布局,但这似乎非常浪费。