How to get location (on screen) of row in 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上的答案让它工作:
解决方法 我曾经在我的应用程序中实现了类似的功能.我这样做的方式:public class MyGestureDetector extends SimpleOnGestureListener { private ListVIEw List; public MyGestureDetector(ListVIEw List) { this.List = List; } //CONDITIONS ARE TYPICALLY VELociTY OR disTANCE @OverrIDe public boolean onFling(MotionEvent e1,float veLocityY) { if (INSERT_CONDITIONS_HERE) if (showDeletebutton(e1)) return true; return super.onFling(e1,e2,veLocityX,veLocityY); } private boolean showDeletebutton(MotionEvent e1) { int pos = List.pointToposition((int)e1.getX(),(int)e1.getY()); return showDeletebutton(pos); } private boolean showDeletebutton(int pos) { VIEw child = List.getChildAt(pos); if (child != null){ button delete = (button) child.findVIEwByID(R.ID.delete_button_ID); if (delete != null) if (delete.getVisibility() == VIEw.INVISIBLE) delete.setVisibility(VIEw.VISIBLE); else delete.setVisibility(VIEw.INVISIBLE); return true; } return false; }}
这对我有用,希望你能让它发挥作用,或者它至少会给你一些暗示.
总结以上是内存溢出为你收集整理的在Android的列表视图中滑动时显示删除按钮全部内容,希望文章能够帮你解决在Android的列表视图中滑动时显示删除按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)