我有一个ExpandableListView
,带有自定义适配器,在我的手势检测器中,我试图弄清楚如何找到手势选择的列表项。
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public void onLongPress(MotionEvent e) {
int itemnum = listView.pointToPosition((int) e.getX(), (int) e.getY());
itemnum -= listView.getFirstVisiblePosition();
因此,如果itemnum = 7,则可能是
group A label
group B label
item B1
item B2
group C label
item C1
item C2
item C3 <== this is position 7, assuming group A label was still on the screen
因此,如果B组崩溃,那么itemnum 7将是C5或D1。
给定一个特定的位置编号,如何确定它所指的组位置和子位置?
如果我知道扩展了哪个组,那么我可以遍历,计算每个项目,但是如果列表已滚动,则不应计算先前的列表。
因此,如果MotionEvent
上有ExpandableListView
,我如何将其转换为所采取行动的View
?
答案 0 :(得分:1)
我找到了解决方案。不确定这是否是最佳方法。
@Override
public void onLongPress(MotionEvent e) {
int itemnum = listView.pointToPosition((int) e.getX(), (int) e.getY());
int itemnum2 = itemnum - listView.getFirstVisiblePosition();
View vi = listView.getChildAt(itemnum2);
所以这就是我获得观点的方式。
不幸的是,在我从上面的File
检索TextView
之后,为了找到子记录,在我的情况下是vi
我必须循环:
String filename = textView.getText().toString();
int groupCount = mAdapter.getGroupCount();
for(int t = 0; t < groupCount; t++) {
int childCount = mAdapter.getChildrenCount(t);
for(int y = 0; y < childCount; y++) {
File f = (File) mAdapter.getChild(t, y);
if (f.getName().equals(filename)) {
}
}
}