如何在 ExpandableListView [Android] 中设置 LongClick 组
Posted
技术标签:
【中文标题】如何在 ExpandableListView [Android] 中设置 LongClick 组【英文标题】:How can I set LongClick on group in ExpandableListView [Android] 【发布时间】:2015-04-18 03:38:38 【问题描述】:我有一个 ExanpdableLisView,我必须为孩子实现 setOnChildClickListener 方法,为组/父实现“LongClick”。
我给孩子穿了一个,但我不知道如何实现 LongClick。
这是setOnChildClickListener
的代码
expListView.setOnChildClickListener(new OnChildClickListener()
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)
RosterEntry rentry = (RosterEntry) exListAdapter.getChild(groupPosition, childPosition);
final String selected = rentry.getName();
//Change Toast to make the new functionality
Toast.makeText(getBaseContext(), selected, Toast.LENGTH_LONG).show();
return true;
);
但我不知道如何在 Group/parent 上进行 LongClick。
【问题讨论】:
android LongClickListener on ExpandableListView group items 的可能重复项 【参考方案1】:对于长按组或子视图,
getExpandableListView().setOnItemLongClickListener(new OnItemLongClickListener()
Override
public boolean onItemLongClick( AdapterView<?> parent, View view, int position, long id)
long packedPosition = m_expandableListView.getExpandableListPosition(position);
int itemType = ExpandableListView.getPackedPositionType(packedPosition);
int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);
int childPosition = ExpandableListView.getPackedPositionChild(packedPosition);
/* if group item clicked */
if (itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP)
// ...
onGroupLongClick(groupPosition);
/* if child item clicked */
else if (itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD)
// ...
onChildLongClick(groupPosition, childPosition);
return false;
);
定义 onGroupLongClick()
和 onChildLongClick()
方法来做任何你想做的事情。
试试这个。这将起作用。
【讨论】:
工作完美。谢谢! 你知道这里的id
参数代表什么吗?它与您从OnChildClickListener.onChildClick()
中的id
参数获得的值不同。【参考方案2】:
这并不是最干净的解决方案,但在您的适配器中,您可以在 getGroupView 方法中为每个视图创建时注册一个 onLongClick 侦听器。
public override View GetGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent)
if(converView == null)
View view = new View(context);
view.setOnLongClickListener(new OnLongClickListener()
public boolean onLongClick(View v)
//enter code here
);
希望对你有帮助!
【讨论】:
谢谢@jonte,也许这可以在未来帮助我,根据点击的组有不同的“反应”,让主代码更干净^^。 Zygoltelnit 的答案很完美以上是关于如何在 ExpandableListView [Android] 中设置 LongClick 组的主要内容,如果未能解决你的问题,请参考以下文章
在键盘中单击完成时如何避免调用 ExpandableListView 中的 getChildView
如何在 ExpandableListView [Android] 中设置 LongClick 组
Android如何在点击expandablelistview时获取孩子的父母姓名
如何自定义 ExpandableListView 目前仅显示一项“已扩展”