使用SwipeDeck2 lib

时间:2017-01-30 04:50:34

标签: java android baseadapter

我已经使用了SwipeDeck2,我设置了所有内容并且它正在运行,但我有一个问题是我无法在其中一个视图上正确设置 OnClickListener 卡我有布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root_cv"
    style="@style/CardViewStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="24dp"
    android:elevation="5dp"
    app:cardCornerRadius="7dp"
    android:layout_gravity="top">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <org.team.asl.me_c.ui.DynamicHeightImageView
                android:id="@+id/iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="88dp"
                android:scaleType="fitCenter"
                app:heightRatio="1.0"
                android:background="@color/grey_white_1000"/>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:orientation="vertical"
                android:gravity="center_vertical"
                android:padding="16dp"
                android:background="@color/indigo_A200"
                android:layout_gravity="bottom">

                <TextView android:layout_marginTop="-15dp"
                    android:id="@+id/display_name_tv"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@android:color/white"
                    android:fontFamily="sans-serif"
                    android:textStyle="bold"
                    android:textSize="22sp"/>

                <TextView
                    android:id="@+id/username_tv"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@android:color/white"
                    android:fontFamily="sans-serif"
                    android:textSize="16sp"/>

            </LinearLayout>

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clipChildren="true">

            <ImageButton
                android:id="@+id/btnLike"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_gravity="top|right"
                android:background="@android:color/transparent"
                android:src="@drawable/ic_heart_outline_grey" />

            <TextView
                android:id="@+id/like_tv"
                android:layout_width="120dp"
                android:background="@drawable/shape_bg_green_rounded_rect"
                android:layout_height="56dp"
                android:gravity="center"
                android:textSize="32sp"
                android:text="LIKE"
                android:textStyle="bold"
                android:alpha="0"
                android:layout_marginTop="32dp"
                android:layout_marginBottom="32dp"
                android:layout_marginLeft="24dp"
                android:textColor="@android:color/holo_green_light"/>

            <TextView
                android:id="@+id/nope_tv"
                android:layout_gravity="right"
                android:layout_width="120dp"
                android:background="@drawable/shape_bg_red_rounded_rect"
                android:layout_height="56dp"
                android:textSize="32sp"
                android:gravity="center"
                android:textStyle="bold"
                android:text="NOPE"
                android:alpha="0"
                android:layout_marginTop="32dp"
                android:layout_marginBottom="32dp"
                android:layout_marginRight="24dp"
                android:textColor="@android:color/holo_red_light"/>

        </FrameLayout>

    </FrameLayout>

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

和适配器

public class SwipeDeckAdapter extends BaseAdapter {

    private List<String> data;
    private Context context;

    private int countLike = 0;
    private ImageButton btnLike;

    //private View.OnClickListener onClickListener;

    public SwipeDeckAdapter(List<String> data, Context context) {
        this.data = data;
        this.context = context;       
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        View v = convertView;
        if(v == null){
            LayoutInflater inflater = LayoutInflater.from(context);
            // normally use a viewholder
            v = inflater.inflate(R.layout.product_card, parent, false);
        }
        ((TextView) v.findViewById(R.id.display_name_tv)).setText(data.get(position));
        btnLike = (ImageButton) v.findViewById(R.id.btnLike);

        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String item = (String)getItem(position);
                Log.e("MainActivity", item);
            }
        });

        btnLike.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                countLike ++;
                Log.e("LIKE_CONT", " is " + countLike);
                btnLike.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_heart_red));

                Toast.makeText(context, "Clicked at index ", Toast.LENGTH_SHORT).show();
            }
        });

        return v;
    }

}

我想在btnLike上添加点击监听器,并希望更改方法

中的图像资源
btnLike.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    countLike ++;
                    Log.e("LIKE_CONT", " is " + countLike);
                    btnLike.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_heart_red));

                    Toast.makeText(context, "Clicked at index ", Toast.LENGTH_SHORT).show();
                }
            });

但结果是

enter image description here

意味着btnLike的图像资源在当前卡中没有改变,但是当我洗牌并在另一张卡上看到btnLike的图像资源被改变了任何建议如何看到该位代码以便它可以正常工作..

0 个答案:

没有答案