tablayout中用于cardview的onClickListener无效

时间:2016-08-11 19:06:51

标签: java android android-recyclerview onclicklistener android-cardview

我在recyclerview中有一个cardview,它位于tablayout中。我在适配器的cardview上放了一个onClickListener,但它不起作用。我只想在挖掘卡片时启动EquationsActivity。我在使用Listener接口进行卡片之前已经开始工作了。但这不起作用,唯一的区别是在这种情况下我的recyclerview是一个tablayout。我不确定这是否会导致任何问题。

感谢您的任何建议!!

我的recyclerViewAdapter:

public class recylcerAdapter extends RecyclerView.Adapter<recylcerAdapter.ViewHolder> {
    private ListView listView;
    private String title;
    private Cursor cursor;
    private Context context;
    private TextView textView;
    private ImageView imageView;
    private int[] imageIds;
    private String[] nameArray;




    public static class ViewHolder extends RecyclerView.ViewHolder{
        //define the viewholder and store card views
        //constructor

        private TextView textView;
        private ImageView imageView;

        private CardView cardView;

        public ViewHolder(CardView v){
            super(v);
            cardView = v;

        }
    }


    public recylcerAdapter(Context context, String title, Cursor cursor, int[]imageIds, String[]nameArray){
        this.cursor = cursor;
        this.title = title;
        this.context = context;

        this.imageIds = imageIds;
        this.nameArray = nameArray;
    }


    @Override
    public  recylcerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
        //create a new view
        CardView cardView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_main, parent, false);
        return new ViewHolder(cardView);

    }

    public void onBindViewHolder(ViewHolder holder, final int position){
        //set the values inside the given view

        CardView cardView = holder.cardView;
        ImageView imageView = (ImageView) cardView.findViewById(R.id.list_icon);
        Drawable drawable = cardView.getResources().getDrawable(imageIds[position]);
        imageView.setImageDrawable(drawable);
        imageView.setContentDescription(nameArray[position]);
        TextView textView = (TextView) cardView.findViewById(R.id.card_text);
        textView.setText(nameArray[position]);

         cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast toast = Toast.makeText(context, "worked", Toast.LENGTH_SHORT);
                toast.show();
                    Intent intent = new Intent(context, EquationsActivity.class);
context.startActivity(intent);



            }
        });



    }

    @Override
    public int getItemCount(){
        //return number of items in the data set
        return nameArray.length;
    }
}

我的回收商布局:

<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/recycler"
android:scrollbars="vertical"
android:clickable="true"


android:foreground="?android:attr/selectableItemBackground"

>

</android.support.v7.widget.RecyclerView>

我的主要协调员&amp;标签布局:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <include
        layout="@layout/tool_bar"
        android:id="@+id/toolBar"

        />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"
        android:background="@color/colorPrimary"

        />


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

<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:id="@+id/pager"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:clickable="true"
/>

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

1 个答案:

答案 0 :(得分:2)

尝试从ViewPager中删除android:clickable="true",然后将其添加到您想要点击的卡片的xml中。