Есть ли способ получить идентификатор ресурсов (например, R.layout.viewtoInflate) макета, из которого было завышено представление?Получить идентификатор ресурса, из которого было завышено представление
Я пытаюсь реализовать представление списка, которое использует 2 настраиваемых макета для элементов списка. Какой макет элемента используется, основан на поле в объектах, используемых для заполнения списка.
Что мне не хватает в моем адаптере - это способ узнать, какой ресурс «convertView», который я получаю в getView(), был завышен. Если бы я мог получить эту информацию, я мог бы сравнить и определить, могу ли я повторно использовать представление конвертации как есть, или если мне нужно заменить его соответствующим макетом для текущего элемента.
Так в идеале было бы что-то вроде этого: виды
@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;
}
В худшем случае я мог бы просто не использовать повторно на всех и просто надуть макет мне нужно каждый раз, но это, кажется, очень расточительно.
Я не понимаю, как я пропустил эту многофункциональную функциональность, но спасибо. Также спасибо за предложение найти тип макета, который больше не нужен, но хорошо знать в любом случае. Тем не менее мне кажется странным, что нет официального способа получить макет завышенного взгляда. – RobertoCuba