我正在使用扩展ExpandableListView
的自定义适配器来实现BaseExpandableAdapter
。
使用MVP模型我以正确的方式成功地为所有组和视图充气。我GetChildView()
public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
BetViewHolder holder = new BetViewHolder(_BetPresenter);
var view = convertView;
if (view != null)
holder = view.Tag as BetViewHolder;
else
{
LayoutInflater layoutInflater = (LayoutInflater)_Context
.GetSystemService(Context.LayoutInflaterService);
holder = new BetViewHolder(_BetPresenter);
view = layoutInflater.Inflate(Resource.Layout.live_bet_view_item, null);
holder.InitEventViews(view);
view.Tag = holder;
}
_BetPresenter.OnBindBetEventView(holder, groupPosition, childPosition);
return view;
}
在OnBindBetEventView
的演示者内部,我在相应的视图上设置数据。
问题
每个子项目都有3个可自定义的组件(按钮)。通常,每个子视图都相对复杂。当我选择子视图的其中一个按钮时,它会成功地改变颜色,但是其他组的其他子视图也会被选中。当我滚动或折叠/展开一个组时,奇怪的部分就出现了。
所选视图正在更改,而其他一些视图正在被选中。 '播放'对于组,它会混乱所有选定的按钮而没有特定的模式。
单击第一个按钮还会检查另一个组上的另一个按钮。它还没有被我选中。滚动和展开组会更改所选按钮的顺序
注
经过大量调试后,我意识到按钮的唯一视图ID的每两个按钮都是重复的。意味着视图的实例完全相同。也许是由于回收或其他东西。关键是我需要保留所选视图的状态,而不是让改编后的视图位置改变。