2016-03-08 3 views
1

Я использую gridview с разным расположением в BaseAdapter. Если представления повторно используются в то время, я получил CastException. Как я могу это решить?Android DataBinding с разной компоновкой в ​​адаптере

код Мой адаптер:

public View getView(int position, View v, ViewGroup parent) { 
    ViewHolder holder; 
    if (position == 0) { 
     if(v == null){ 
      TestItemBinding binding = DataBindingUtil. 
        inflate(LayoutInflater.from(mContext), R.layout.test_item, parent, false); 
      holder = new ViewHolder(); 
      holder.view = binding.getRoot(); 
     } else { 
      holder = (GridViewHolder) v.getTag(); 
     } 
    } else { 
     if(v == null){ 
      TestItem2Binding binding = DataBindingUtil. 
        inflate(LayoutInflater.from(mContext), R.layout.test2_item, parent, false); 
      holder = new ViewHolder(); 
      holder.view = binding.getRoot(); 
     } else { 
      holder = (GridViewHolder) v.getTag(); 
     } 
    } 
    setImage(holder.imageView, items.get(position)); 
    return v; 
} 
+0

Вы можете разместить свой код? –

ответ

0

Вы не ставим метки на ваш взгляд. Вы запрашиваете тег без его настройки. Добавить эту строку v.setTag(holder) после того, как из ваших линий holder.view = binding.getRoot();

Если он не работает, то попробуйте v.setTag(holder.view)

Смежные вопросы