ExpandableListView子视图在组上的定位展开或滚动

时间:2018-02-22 14:25:36

标签: android xamarin.android expandablelistview

我正在使用扩展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个可自定义的组件(按钮)。通常,每个子视图都相对复杂。当我选择子视图的其中一个按钮时,它会成功地改变颜色,但是其他组的其他子视图也会被选中。当我滚动或折叠/展开一个组时,奇怪的部分就出现了。

所选视图正在更改,而其他一些视图正在被选中。 '播放'对于组,它会混乱所有选定的按钮而没有特定的模式。

enter image description here

单击第一个按钮还会检查另一个组上的另一个按钮。它还没有被我选中。滚动和展开组会更改所选按钮的顺序

经过大量调试后,我意识到按钮的唯一视图ID的每两个按钮都是重复的。意味着视图的实例完全相同。也许是由于回收或其他东西。关键是我需要保留所选视图的状态,而不是让改编后的视图位置改变。

0 个答案:

没有答案