单击时如何更新CardView?

时间:2015-07-06 14:03:40

标签: android android-recyclerview android-cardview

我有一个RecyclerView并使用CardView作为我的项目。 我希望当我点击CardView时,该视图更新并显示另一个布局(或设置一些布局可见且不可见)。

这是我的onBindViewHolder代码:

  public void onBindViewHolder(final ViewHolder viewHolder, int i) {
    ProductTO product = products.get(i);


    viewHolder.productUtils.setVisibility(View.GONE);

    viewHolder.productName.setText(product.getProductName());
    viewHolder.productPrice.setText(product.getProductPrice() + Constants.CURRENCY);
    viewHolder.productOldPrice.setText(product.getProductOldPrice() + Constants.CURRENCY);
    viewHolder.productOldPrice.setPaintFlags(viewHolder.productOldPrice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
    arcxxImageLoader.LoadImage(product.getProductImages(), viewHolder.productImage);


    viewHolder.productView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            viewHolder.productView.setVisibility(View.GONE);
            viewHolder.productUtils.setVisibility(View.VISIBLE);
        }
    });


}

这是我的Cardview_layout

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:id="@+id/productView"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_margin="5dp"
    card_view:cardCornerRadius="5dp"
    >


<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


    <LinearLayout
            android:id="@+id/productUtils"
            android:padding="10dp"
            android:orientation="vertical"
            android:gravity="right"
            android:weightSum="14"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            >


        <EditText
                android:text="test :|"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>


    </LinearLayout>


    <LinearLayout
            android:id="@+id/productInfos"
            android:padding="10dp"
            android:orientation="vertical"
            android:gravity="right"
            android:weightSum="14"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            >


        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="10"
                >


            <ImageView
                    android:id="@+id/productImage"
                    android:layout_width="110dp"
                    android:layout_height="130dp"
                    android:scaleType="centerCrop"
                    android:tint="@color/abc_primary_text_disable_only_material_dark"
                    />

        </LinearLayout>


        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="2"
                >

            <TextView
                    android:id="@+id/productName"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:focusable="true"
                    android:clickable="true"
                    android:textSize="16sp"
                    android:textColor="#2d2d2d"
                    />

        </LinearLayout>


        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                >

            <TextView
                    android:id="@+id/productOldPrice"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:focusable="true"
                    android:clickable="true"
                    android:textSize="14sp"
                    android:textColor="#fff2594e"

                    />

        </LinearLayout>


        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                >

            <TextView
                    android:id="@+id/productPrice"
                    android:gravity="center"
                    android:focusable="true"
                    android:clickable="true"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="14sp"
                    android:textColor="#ff14ff11"
                    />

        </LinearLayout>


    </LinearLayout>


</RelativeLayout>

但当我点击CardView时,Cardview已经消失了,我的应用程序上将会出现白色空间..

当我点击productInfo时,我怎么能这样做,我的profileUtils显示?

1 个答案:

答案 0 :(得分:1)

您不应该改变整个CardView的可见性 你应该在CardView中隐藏一个布局。

例如:

viewHolder.productView.setOnClickListener(new View.OnClickListener()      {
    @Override
    public void onClick(View v) {
        viewHolder.productInfos.setVisibility(View.GONE);
        viewHolder.productUtils.setVisibility(View.VISIBLE);
    }
});