Android ExpandableListView中存在重复项

Android ExpandableListView中存在重复项,android,expandablelistview,Android,Expandablelistview,在ExpandableListView中创建两个组,每个组有一个子组。展开两个组。从一个组中删除子级基本上消除该组,并调用BaseExpandableListAdapter的适配器intance的notifyDataSetChanged 将显示剩余组中的子项的副本。折叠仅存的组,副本将保留在屏幕上。再次单击组标题并重新折叠,重复的内容将消失。到目前为止,我找到的唯一解决方案是控制所有点击,一次只允许扩展一个组。有一个真实的孩子和一个重复的屏幕适配器调用getChildView 4?!始终请求查看

在ExpandableListView中创建两个组,每个组有一个子组。展开两个组。从一个组中删除子级基本上消除该组,并调用BaseExpandableListAdapter的适配器intance的notifyDataSetChanged

将显示剩余组中的子项的副本。折叠仅存的组,副本将保留在屏幕上。再次单击组标题并重新折叠,重复的内容将消失。到目前为止,我找到的唯一解决方案是控制所有点击,一次只允许扩展一个组。有一个真实的孩子和一个重复的屏幕适配器调用getChildView 4?!始终请求查看同一组0和子组0的次数。对适配器回调的所有响应都是正确的。这很容易通过简单的测试项目进行复制,请参见下面的代码。有什么想法吗?这是安卓4.4.4

public class MyAdapter extends BaseExpandableListAdapter {

@Override
public int getGroupCount() {
    return MyController.getInstance().getGroupCount();
}

@Override
public int getChildrenCount(int i) {
    return 1;
}

@Override
public Object getGroup(int i) {
    return null;
}

@Override
public Object getChild(int i, int i2) {
    return null;
}

@Override
public long getGroupId(int i) {
    return 0;
}

@Override
public long getChildId(int i, int i2) {
    return 0;
}

@Override
public boolean hasStableIds() {
    return false;
}

@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
    if (view == null) {LayoutInflater inflater = LayoutInflater.from(MainActivity.getMainContext());
    view = inflater.inflate(R.layout.group, null);
    }

    TextView groupHeader = (TextView) view.findViewById(R.id.lblListHeader);
    groupHeader.setText(MyController.getInstance().getGroupName(i));

    return view;
}

@Override
public View getChildView(int i, int i2, boolean b, View view, ViewGroup viewGroup) {
        if (view == null) {
            LayoutInflater inflater = LayoutInflater.from(MainActivity.getMainContext());
            view = inflater.inflate(R.layout.list_item, null);
        }

   (...set view fields...)

    return view;
}

@Override
public boolean isChildSelectable(int i, int i2) {
    return true;
}
在测试项目中,有两个按钮用于添加/删除组按钮New和buttonRemove,代码为:

public class MyController extends ActionBarActivity {

private static Context mMainContext;
myAdapter adapter;
int groupCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mMainContext = MyController.this;
    ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
    adapter = new myAdapter();
    expandableListView.setAdapter(adapter);
    Button buttonNew = (Button)findViewById(R.id.buttonAddGroup);
    buttonNew.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            groupCount += 1;
            adapter.notifyDataSetInvalidated();
        }
    });
    Button buttonRemove = (Button)findViewById(R.id.buttonRemoveGroup);
    buttonRemove.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            groupCount -= 1;
            adapter.notifyDataSetInvalidated();
        }
    });
}

public static Context getInstance()
{
    return mMainContext;
}

public int getGroupCount()
{
    return groupCount;
}

您能否发布代码,说明在从MyController.getInstance中删除子级和组的过程中如何修改MyController.getInstance?添加了我在测试项目中使用的代码,以复制该问题。