Android ExpandableListView中存在重复项
在ExpandableListView中创建两个组,每个组有一个子组。展开两个组。从一个组中删除子级基本上消除该组,并调用BaseExpandableListAdapter的适配器intance的notifyDataSetChanged 将显示剩余组中的子项的副本。折叠仅存的组,副本将保留在屏幕上。再次单击组标题并重新折叠,重复的内容将消失。到目前为止,我找到的唯一解决方案是控制所有点击,一次只允许扩展一个组。有一个真实的孩子和一个重复的屏幕适配器调用getChildView 4?!始终请求查看同一组0和子组0的次数。对适配器回调的所有响应都是正确的。这很容易通过简单的测试项目进行复制,请参见下面的代码。有什么想法吗?这是安卓4.4.4Android ExpandableListView中存在重复项,android,expandablelistview,Android,Expandablelistview,在ExpandableListView中创建两个组,每个组有一个子组。展开两个组。从一个组中删除子级基本上消除该组,并调用BaseExpandableListAdapter的适配器intance的notifyDataSetChanged 将显示剩余组中的子项的副本。折叠仅存的组,副本将保留在屏幕上。再次单击组标题并重新折叠,重复的内容将消失。到目前为止,我找到的唯一解决方案是控制所有点击,一次只允许扩展一个组。有一个真实的孩子和一个重复的屏幕适配器调用getChildView 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?添加了我在测试项目中使用的代码,以复制该问题。