相关疑难解决方法(0)

在列表视图中重绘单行

是否可以重绘一行中的一行ListView?我有一个ListView行是LinearLayouts.我听一个偏好改变,有时候我需要改变一行View内的LinearLayout一个.有没有办法让它重新绘制该行而不调用listview.notifyDatasetChanged()

我试过在视图(内部)上调用view.invalidate(),LinearLayout但它没有重绘行.

android listview view redraw android-arrayadapter

40
推荐指数
2
解决办法
3万
查看次数

在Android的列表视图中滑动时显示删除按钮

扩展另一个Stackoverflow问题,我已经实现了一些手势检测代码,以便我可以检测我的listview(在FrameLayout中)中的行何时被刷过.我跟着Damian的问题/答案,关于如何从适配器获取单独的行/视图. 如何在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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的列表适配器代码与引用的问题相同.

编辑:我尝试在列表视图上使用getChildAt()来获取行的视图,当有一个或更少的项目时,这可以工作,但是当返回错误的视图时,错误的删除按钮变为可见.

编辑2:我在这里使用问题的答案让它工作:

android listview onfling

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

listview ×2

android-arrayadapter ×1

onfling ×1

redraw ×1

view ×1