这个布局有什么问题,双击

时间:2015-06-19 03:41:39

标签: android xml android-layout android-recyclerview

我正在尝试做类似于此应用列表

的操作

enter image description here

但这对我来说太难了,我不能很好地理解布局系统,所以我最终在RecyclerView中做了一些事情,左边是矩形和图像按钮,右边是两个。所有按钮都有一些功能。如果您点击星标,它将从收藏夹添加/删除它,下载按钮将下载它,右侧按钮将删除和更新。

enter image description here

我使用google

中的代码添加了clickListener的功能
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
    private OnItemClickListener mListener;

    public interface OnItemClickListener {
        public void onItemClick(View view, int position);
    }

    GestureDetector mGestureDetector;

    public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildPosition(childView));
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }
}

并将Listener链接起来:

 mRecyclerView.addOnItemTouchListener(
                new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
                    @Override public void onItemClick(View view, int position) {
                        Context context = getApplicationContext();
                        int duration = Toast.LENGTH_SHORT;
                        CharSequence text = "Item CLICKED";
                        Toast toast = Toast.makeText(context, text, duration);
                        toast.show();

                    }

它显示项目单击甚至当我点击ImageButton(我为它设置了另一个功能)时,两个动作都被调用...

如何才能让点击次数变得明显?

但我认为主要的问题是我的.xml,有人可以看看有什么问题吗?我添加了很多亲戚,一个是边框,另一个是背景,第三个是里面的项目= x。

这是回收商的item_list。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="10dp"
    >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/border"
        android:padding="1dp"
        >

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

    android:baselineAligned="false"
    android:padding="5dp"
    android:background="@android:color/white"
    android:weightSum="1"


    >

    <LinearLayout android:id="@+id/thumbnail"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:layout_alignParentLeft="true"
        android:background="@android:color/white"

        android:layout_marginRight="5dip">

        <ImageButton
            android:id="@+id/status"
            android:background="@android:color/white"


            android:layout_width="25dip"
            android:layout_height="25dip"

            />

    </LinearLayout>


    <TextView
        android:id="@+id/titulo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:textColor="#040404"
        android:typeface="sans"
        android:background="@android:color/white"



        android:textSize="15dip"
        android:textStyle="bold"/>

    <TextView
        android:id="@+id/descricao"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#343434"
        android:textSize="10dip"
        android:layout_toRightOf="@+id/thumbnail"
        android:background="@android:color/white"



        android:layout_below="@+id/titulo" />



    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"


        android:paddingRight="10dp"
        android:id="@+id/delete"
        android:layout_toLeftOf="@+id/update"
        android:padding="5dip"

        android:onClick="deletarLei" />

    <ImageButton android:layout_width="wrap_content"
        android:id="@+id/update"
        android:layout_height="wrap_content"
        android:background="@android:color/white"

        android:padding="5dip"

        android:layout_alignParentRight="true"

        />


</RelativeLayout>
    </RelativeLayout>
    </RelativeLayout>

1 个答案:

答案 0 :(得分:0)

当我遇到类似问题时,布局中最顶层ViewGroup上的标记通常可以解决问题。在您的情况下,这将是每个单元格/行中最顶层的ViewGroup。

android:descendantFocusability="beforeDescendants"

您甚至可以尝试在RecyclerView上进行设置。只有3个选项,我记得beforeDescendants应该工作,否则另外2个尝试。

我认为您可以在适配器中的图像上放置OnClickListener,在循环视图上只放置onItemClickListener。从你的代码中可以清楚地知道你在做什么。