【问题标题】:Expandable listview onItemLongClick and getChildView可展开的列表视图 onItemLongClick 和 getChildView
【发布时间】:2017-11-21 01:29:07
【问题描述】:

美好的一天!

我想让 getChildView 上的 setItemChecked 具有我在 onItemLongClick 中使用的原始位置我应该使用什么来在此语句中使用正确的位置 mExpandableListView.isItemChecked(childPosition) 或者是否有任何方法可以用来获得正确的位置。 注意:我已经使用了 int childPosition = ExpandableListView.getPackedPositionChild(id);getChildView

中使用时位置不正确
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    // validate if item selected is a child not the groupview
    if (!mIsMultiSelection) {
        mIsMultiSelection = true;
        int childPosition = ExpandableListView.getPackedPositionChild(id);
        mExpandableListView.setItemChecked(position , true);
    }
    return true;
}

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if (mExpandableListView.isItemChecked(childPosition)) {
        Log.e("test2"," " + childPosition);
    }

}

【问题讨论】:

  • 请正确澄清您的问题。是否需要在 ExpandableListView 中启用“Multi check”。对吗?
  • 是的,这将是对 isItemChecked 的多重验证,但是当它进入 getChildView 时位置不正确,所以如果可能的话,他们无论如何都要获得在 setItemChecked 上设置为 true 的位置?
  • 是否有任何特定的 id 与您可以持有的子对象。因此,每当您的项目被选中时,将其标记在地图或集合中,然后在呈现时检查该项目是否被选中。使用这种方法,您可以轻松处理所选项目的逻辑。希望对你有帮助

标签: android expandablelistview expandablelistadapter onlongclicklistener


【解决方案1】:

我能够解决我的问题,为了在 getChildView 中获取原始位置,首先获取可扩展列表视图的原始位置 packPosition,然后将其用于 getFlatListPosition 请看下面我的sn-p

long packPosition = ExpandableListView.getPackedPositionForChild(groupPosition, childPosition);
    int rawPosition = mExpandableListView.getFlatListPosition(packPosition);

希望对大家有帮助!

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多