如何使用SwipeDismissBehavior.OnDismissListener上RecyclerView如何使用、SwipeDismissBehavior、RecyclerView、OnDism

由网友(她结婚我劫婚)分享简介:我想用户的 SwipeDismissBehavoir 从设计支持库。我在 RecyclerView 和刷卡的项目列表中的项目要解雇(如谷歌的收件箱中的应用程序)。我设置的侦听器 RecyclerView 项目,但 SwipeDismissBehavior onDismiss 监听器是没有得到调用。SwipeDism...

我想用户的 SwipeDismissBehavoir 从设计支持库。我在 RecyclerView 和刷卡的项目列表中的项目要解雇(如谷歌的收件箱中的应用程序)。

我设置的侦听器 RecyclerView 项目,但 SwipeDismissBehavior onDismiss 监听器是没有得到调用。

  SwipeDismissBehavior行为=新SwipeDismissBehavior();

    CoordinatorLayout.LayoutParams PARAMS =(CoordinatorLayout.LayoutParams)mItemLayout.getLayoutParams();
    params.setBehavior(行为);
    behavior.setListener(新SwipeDismissBehavior.OnDismissListener(){
        @覆盖
        公共无效onDismiss(查看视图){

        }

        @覆盖
        公共无效onDragStateChanged(int i)以{

        }
    });
    mItemLayout.setLayoutParams(PARAMS);
 

解决方案

试着用单一视图。 我能知道的观点被驳回,但我不知道怎么恢复如Gmail的看法。

布局:

 < android.support.design.widget.CoordinatorLayout
            的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
            的xmlns:工具=htt​​p://schemas.android.com/tool​​s
            机器人:layout_width =match_parent
            机器人:layout_height =match_parent
            机器人:ID =@ + ID / coordinatorLayout
            工具:上下文=MainActivity。>


        < android.support.v7.widget.CardView
                机器人:ID =@ + ID / cardView
                机器人:layout_margin =20dp
                机器人:layout_width =match_parent
                机器人:layout_height =match_parent>
            <的TextView
                    机器人:文本=哈哈
                    机器人:layout_width =match_parent
                    机器人:layout_height =WRAP_CONTENT/>
        < /android.support.v7.widget.CardView>

< /android.support.design.widget.CoordinatorLayout>
 

活动:

 公共类MainActivity扩展AppCompatActivity {

    私人CoordinatorLayout coordinatorLayout;
    私人CardView cardView;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);


        coordinatorLayout =(CoordinatorLayout)findViewById(R.id.coordinatorLayout);
        cardView =(CardView)findViewById(R.id.cardView);

        CoordinatorLayout.LayoutParams PARAMS =(CoordinatorLayout.LayoutParams)cardView.getLayoutParams();

        最后SwipeDismissBehavior< CardView>行为=新SwipeDismissBehavior();
        behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END);
        behavior.setListener(新SwipeDismissBehavior.OnDismissListener(){
            @覆盖
            公共无效onDismiss(最终查看视图){
                Snackbar.make(coordinatorLayout,完成,Snackbar.LENGTH_LONG)
                        。显示();
            }

            @覆盖
            公共无效onDragStateChanged(int i)以{
            }
        });
        params.setBehavior(行为);

        cardView.setOnTouchListener(新View.OnTouchListener(){
            @覆盖
            公共布尔onTouch(视图V,MotionEvent事件){
                返回behavior.onTouchEvent(co​​ordinatorLayout,cardView,事件);
            }
        });
    }


}
 
通过辐射发射测试 如何避免采用复杂的EMI抑制技术以实现紧凑 高性价比的隔离设计

I am trying to user the SwipeDismissBehavoir from design support library. I've list items in RecyclerView and swiping an item have to dismiss (like google inbox app) .

I've set the listener for the RecyclerView items but the SwipeDismissBehavior onDismiss listener is not getting called.

  SwipeDismissBehavior behavior = new SwipeDismissBehavior();

    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams)mItemLayout.getLayoutParams();
    params.setBehavior(behavior);
    behavior.setListener(new SwipeDismissBehavior.OnDismissListener() {
        @Override
        public void onDismiss(View view) {

        }

        @Override
        public void onDragStateChanged(int i) {

        }
    });
    mItemLayout.setLayoutParams(params);

解决方案

Tried with single view. I can know the view was dismissed, but I'm wondering how to restore the view like Gmail.

Layout:

<android.support.design.widget.CoordinatorLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/coordinatorLayout"
            tools:context=".MainActivity">


        <android.support.v7.widget.CardView
                android:id="@+id/cardView"
                android:layout_margin="20dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
            <TextView
                    android:text="Haha"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>
        </android.support.v7.widget.CardView>

</android.support.design.widget.CoordinatorLayout>

Activity:

public class MainActivity extends AppCompatActivity {

    private CoordinatorLayout coordinatorLayout;
    private CardView cardView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
        cardView = (CardView) findViewById(R.id.cardView);

        CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) cardView.getLayoutParams();

        final SwipeDismissBehavior<CardView> behavior = new SwipeDismissBehavior();
        behavior.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_START_TO_END);
        behavior.setListener(new SwipeDismissBehavior.OnDismissListener() {
            @Override
            public void onDismiss(final View view) {
                Snackbar.make(coordinatorLayout, "Done", Snackbar.LENGTH_LONG)
                        .show();
            }

            @Override
            public void onDragStateChanged(int i) {
            }
        });
        params.setBehavior(behavior);

        cardView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return behavior.onTouchEvent(coordinatorLayout, cardView, event);
            }
        });
    }


}

阅读全文

相关推荐

最新文章