Android RecyclerView,如何使用按钮滑动显示布局

时间:2016-01-22 08:54:17

标签: android android-recyclerview

我想制作一个像Gmail一样的RecyclerView应用程序,在滑动时显示一个删除按钮和一个编辑按钮。

他是我的XML代码。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/FlashBarLayout"
        android:layout_width="match_parent"
        android:layout_height="77dp"
        android:layout_gravity="right"
        android:layout_marginBottom="0dp"
        android:background="@color/fab_material_grey_200">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="77dp"
            android:layout_below="@+id/LinearLayout02"
            android:gravity="center|end">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="0.5"/>

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="0dp"
                android:layout_weight="0.25"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_create_black_48dp"
                android:paddingRight="5dp"/>

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="0dp"
                android:layout_weight="0.25"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_delete_black_48dp"
                android:paddingRight="5dp"/>

        </LinearLayout>

    </FrameLayout>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="77dp"
        android:orientation="vertical"
        android:id="@+id/item"
        android:background="@color/fab_material_white">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/LinearLayout01">

            <TextView
                android:id="@+id/tvNPreparacion"
                style="@style/EtiquetasResaltadas"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="0.44"
                android:gravity="center_horizontal"
                android:text="@string/NPreparacion" />

            <TextView
                android:id="@+id/tvFecha"
                style="@style/EtiquetasResaltadas"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="0.70"
                android:gravity="center|top"
                android:text="@string/FechaHora" />

            <TextView
                android:id="@+id/tvNPedidos"
                style="@style/EtiquetasResaltadas"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1.12"
                android:gravity="center|top"
                android:text="@string/NPedidos" />

            <TextView
                android:id="@+id/tvNAlbaranes"
                style="@style/EtiquetasResaltadas"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="left"
                android:text="@string/NAlbaranes" />

            <TextView
                android:id="@+id/tvHojasCarga"
                style="@style/EtiquetasResaltadas"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1.00"
                android:gravity="left"
                android:text="@string/NHojasCarga" />

            <TextView
                android:id="@+id/tvNFacturas"
                style="@style/EtiquetasResaltadas"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="0.99"
                android:gravity="left"
                android:text="@string/NFacturas" />

            <TextView
                android:id="@+id/tvNArticulos"
                style="@style/EtiquetasResaltadas"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="0.5"
                android:gravity="left"
                android:text="@string/NArticulos" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/LinearLayout01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/tvAgente"
                style="@style/EtiquetasResaltadas"
                android:layout_width="0dp"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:gravity="left"
                android:text="@string/Agente" />
        </LinearLayout>

    </RelativeLayout>

</FrameLayout>

这是我的onChildDraw方法。

 public void onChildDraw(Canvas c, RecyclerView recyclerView,
                        RecyclerView.ViewHolder viewHolder, float dX, float dY,
                        int actionState, boolean isCurrentlyActive) {

    if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
            ((ActivityVentas.AdaptadorPedidos.ViewHolder) viewHolder).itemLayout.setTranslationX(dX / 2);

    } else {
        super.onChildDraw(c, recyclerView, viewHolder, dX, dY,
                actionState, isCurrentlyActive);

    }
}

在我的onBindViewHolder方法中,我做了这个:

mViewHolder.Img_Borrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(ActivityVentas.this);

                alertDialogBuilder
                        .setTitle("Eliminar la entrada")
                        .setMessage("¿Está seguro que desea eliminar la entrada seleccionada?")
                        .setCancelable(false)
                        .setPositiveButton("Eliminar entrada", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                            }
                        })
                        .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

                // create alert dialog
                AlertDialog alertDialog = alertDialogBuilder.create();
                // show it
                alertDialog.show();
            }
        });

但我无法点击图片查看。

我如何定义这个onClick方法?

0 个答案:

没有答案