6
在另一个Stackoverflow问题上展开,我已经实现了一些手势检测代码,这样我就可以检测到我的ListView中的一行(在FrameLayout中)已被刷过。我在这里跟踪了Damian的问题/回答,以了解如何从适配器获取单个行/视图。 How to get location (on screen) of row in listview在Android的listview中显示一个删除按钮
我的onFling代码获取该行的视图,并尝试将设置为不可见的xml布局中的删除按钮设置为可见。但是,这不会发生。我想知道如何让一个按钮在列表视图中显示在一个滑动?
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
int itemId = MyClass.this.lv.pointToPosition(
(int) e1.getX(), (int) e1.getY());
Log.v("item id", String.valueOf(itemId));
View v = MyClass.this.adapter
.getViewOnScreen(itemId);
Button delete = (Button) v.findViewById(R.id.button_delete);
delete.setVisibility(View.VISIBLE);
//MyClass.this.adapter.notifyDataSetChanged();
}
} catch (Exception e) {
// nothing
}
return false;
}
}
我的列表适配器代码与引用的问题相同。
编辑:我尝试使用列表视图getChildAt()获取行的视图,并且这有效的时候有一个屏幕或更少的项目,但当多于错误的视图返回,因此错误的删除按钮变得可见。
编辑2:我以前对这个问题here答案得到它的工作:
嗨在片段中使用相同的代码,但是iam在onFling方法中在e1处获得null。你能帮我么 ? –
@GangadharNimbally你应该开始你自己的问题,你把完整的stacktrace和你的代码。 – Heskja
我已经实现了上面的类,但有些如何不适合我。新的MyGestureDetector(lst_sampleList); –