大佬你好! demo中,item_expandable_lv2.xml 如果这个布局中含有Edittext,就会导致public int expand(@IntRange(from = 0) int position) { return expand(position, true, true); } 这个方法,默认会保持当前焦点在屏幕上,有可能会在屏幕上方添加子Item,然后就会导致数据错乱问题;
望大佬们有空能关注下此问题,或者默认写死添加子Item时,不考虑焦点问题
大佬你好! demo中,item_expandable_lv2.xml 如果这个布局中含有Edittext,就会导致public int expand(@IntRange(from = 0) int position) { return expand(position, true, true); } 这个方法,默认会保持当前焦点在屏幕上,有可能会在屏幕上方添加子Item,然后就会导致数据错乱问题;
望大佬们有空能关注下此问题,或者默认写死添加子Item时,不考虑焦点问题
设置Edittext失去焦点是否可以解决你的问题?
恩 ,可以的,我目前是是这么解决的。展示是没有问题的。但是编辑了某个子Item之后还是会有问题
编辑之后会有什么问题?
同上。。。编辑之后 点击上层的Item 有可能会在屏幕上方添加子Item ,继而导致数据错乱问题
Edittext数据错乱?是不是缓存问题? 你可以看看 http://www.jianshu.com/p/b343fcff51b0
不是缓存问题 public int expand(@IntRange(from = 0) int position, boolean animate, boolean shouldNotify) { position -= getHeaderLayoutCount();
IExpandable expandable = getExpandableItem(position);
if (expandable == null) {
return 0;
}
if (!hasSubItems(expandable)) {
expandable.setExpanded(false);
return 0;
}
int subItemCount = 0;
if (!expandable.isExpanded()) {
List list = expandable.getSubItems();
mData.addAll(position + 1, list);
subItemCount += recursiveExpand(position + 1, list);
expandable.setExpanded(true);
subItemCount += list.size();
}
int parentPos = position + getHeaderLayoutCount();
if (shouldNotify) {
if (animate) {
notifyItemChanged(parentPos);
notifyItemRangeInserted(parentPos + 1, subItemCount);
} else {
notifyDataSetChanged();
}
}
return subItemCount;
}
这个方法在展开的时候,会保持当前焦点在屏幕上,在焦点上方展开上面一个父Item,而后面再展开其他父item的时候mData.addAll(position + 1, list); 取得position就会不对。 我说的数据错乱指的展开第一个父Item时,可能出现的是第三个父item里面的子item。 当然这些问题在没有edittext时 都是不存在,具体的情况大佬有空可以把自己的Demo中item_expandable_lv2.xml 这个布局中写个edittext试下,真的太难讲清楚了......
大佬你好 我用BaseMultiItemQuickAdapter实现多布局时,先是请求接口得到父布局的数据,if (null != mGroupData) { for (RWisdomGroup one : mGroupData) { MultiItemEntity one1 = one; if (null != mChildItemData) { for (RTradeItem two : mChildItemData) { one.addSubItem(two); } } itemEntities.add(one1); } return itemEntities; } 这时候mchildData数据是null,上面遍历完成后给adapter设置数据,父布局正确展示,当点击父布局时在请求子布局数据接口,得到数据后通过适配器的addData方法添加数据,子布局也正确展示,当再次点击相同的父布局时adapter的isExpanded方法仍然返回false,导致无法折叠
这个布局的折叠和展开功能 父布局和子布局的数据必须同时有值吗?
@wardenlzr 我试了一下,没有重现你说的问题
@Songshuangpeng 请另开issue