Android 单击recyclerview的单个视图,更改图标、文本颜色,并使布局的某些部分可见和不可见

Android 单击recyclerview的单个视图,更改图标、文本颜色,并使布局的某些部分可见和不可见,android,android-recyclerview,Android,Android Recyclerview,我试图在Recyclerview单个项目上实现Onclicklistner。 我可以在单击单个项目时添加功能 这些功能是 我必须更改可绘制图像、文本视图颜色和视图的颜色边框。 2我还必须使布局上的一些视图不可见,比如在Recyclerview的某些特定视图中不显示按钮。 我很难解决这个问题,请帮忙 这是我的回收适配器 import android.content.Context; import android.content.Intent; import android.graphics.Col

我试图在Recyclerview单个项目上实现Onclicklistner。 我可以在单击单个项目时添加功能 这些功能是

  • 我必须更改可绘制图像、文本视图颜色和视图的颜色边框。 2我还必须使布局上的一些视图不可见,比如在Recyclerview的某些特定视图中不显示按钮。 我很难解决这个问题,请帮忙
  • 这是我的回收适配器

    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Color;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import com.awfis.vms.R;
    import com.awfis.vms.model.DataModel;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import static com.android.volley.VolleyLog.TAG;
    
    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
        LinearLayout mLinearLayout;
        Context context;
        List<DataModel> mData;
    
    
        public RecyclerViewAdapter(Context context, List<DataModel> mData) {
            this.context = context;
            this.mData = mData;
        }
    
    
    
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    
            View view;
            LayoutInflater mInflater = LayoutInflater.from(context);
            view = mInflater.inflate(R.layout.recyclerview_item, parent, false);
            return new MyViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            holder.typeofGuest.setText(mData.get(position).getText());
            holder.guestImage.setImageResource(mData.get(position).getDrawable());
            holder.mLinearLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                 mLinearLayout.setBackgroundColor(R.drawable.border_view_inpressed);
                }
            });
    
    
        }
    
        @Override
        public int getItemCount() {
            return mData.size();
        }
    
        public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
            LinearLayout mLinearLayout;
            TextView typeofGuest;
            ImageView guestImage;
            boolean click = true;
            int[] myImageList = new int[]{R.drawable.guest, R.drawable.meetingroom_booking, R.drawable.centertour, R.drawable.housekeeping, R.drawable.delivery, R.drawable.vendor};
            int[] myImageList_one = new int[]{R.drawable.guest_two, R.drawable.meetingroom_booking_two, R.drawable.centertour_two, R.drawable.housekeeping_two, R.drawable.deliverytwo, R.drawable.vendor_two};
    
            public MyViewHolder(View itemView) {
                super(itemView);
                mLinearLayout=itemView.findViewById(R.id.recycleritem_layout);
                typeofGuest = itemView.findViewById(R.id.guest_type);
                guestImage = itemView.findViewById(R.id.guest_pic);
                typeofGuest.setOnClickListener(this);
            }
            @Override
            public void onClick(View view) {
                if (click) {
                    mLinearLayout.setBackgroundColor(Color.parseColor("#F44336"));
                    typeofGuest.setTextColor(Color.parseColor("#F44336"));
                    guestImage.setImageResource(myImageList[getPosition()]);
                    if (view.getId() == typeofGuest.getId()) {
                        if(getAdapterPosition()==1)
                        Toast.makeText(view.getContext(), "ITEM PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
                        click = false;
                    } else {
                        typeofGuest.setTextColor(Color.parseColor("#000000"));
                        mLinearLayout.setBackgroundColor(Color.parseColor("#000000"));
                        guestImage.setImageResource(myImageList_one[getPosition()]);
    
                        click = true;
                    }
    
    
                }
            }
        }
    }
    
    这是我的活动,我必须在其中显示RecyclerView

    public class AddVisitorActivity extends BaseActivity {
        List<DataModel>lsData;
        int spanCount = 3; // 3 columns
        int spacing = 50; // 50px
        boolean includeEdge = false;
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add_visitor);
            lsData= new ArrayList<>();
            lsData.add(new DataModel("Guest",R.drawable.guest_two));
            lsData.add(new DataModel("Metting Room Booking",R.drawable.meetingroom_booking_two));
            lsData.add(new DataModel("Center Tour",R.drawable.centertour_two));
            lsData.add(new DataModel("House Keeping",R.drawable.housekeeping_two));
            lsData.add(new DataModel("Delivery",R.drawable.deliverytwo));
            lsData.add(new DataModel("Vendor",R.drawable.vendor_two));
            RecyclerView mRecyclerview= findViewById(R.id.rvNumbers);
            RecyclerViewAdapter mAdapter = new RecyclerViewAdapter(this,lsData);
            mRecyclerview.setLayoutManager(new GridLayoutManager(this,3));
            mRecyclerview.setAdapter(mAdapter);
    
            mRecyclerview.addItemDecoration(new SpacesItemDecoration(spanCount, spacing, includeEdge));
        }
    
    }
    
    public类AddVisitorActivity扩展了BaseActivity{
    列表数据;
    int spanCount=3;//3列
    int间距=50;//50px
    布尔includeEdge=false;
    @凌驾
    创建时的公共void(@Nullable Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity\u add\u visitor);
    lsData=newarraylist();
    添加(新的数据模型(“Guest”,R.drawable.Guest_-two));
    lsData.add(新的数据模型(“会议室预订”,R.drawable.meetingroom_Booking_two));
    添加(新的数据模型(“中心漫游”,R.drawable.centertour_two));
    添加(新的数据模型(“House-Keeping”,R.drawable.housing_-two));
    添加(新的数据模型(“Delivery”,R.drawable.deliverytwo));
    添加(新的数据模型(“供应商”,R.drawable.Vendor_two));
    RecyclerView mRecyclerview=findViewById(R.id.RVNumber);
    RecycleServiceAdapter mAdapter=新的RecycleServiceAdapter(此为lsData);
    setLayoutManager(新的GridLayoutManager(this,3));
    mRecyclerview.setAdapter(mAdapter);
    mRecyclerview.addItemDecoration(新的SpacesItemDecoration(跨度、间距、包括边缘));
    }
    }
    
    我的recyclerView项xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="@dimen/_75sdp"
        android:id="@+id/recycleritem_layout"
        android:layout_height="@dimen/_70sdp"
        android:background="@drawable/borde_view"
        android:orientation="horizontal">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="vertical">
    
            <ImageView
                android:id="@+id/guest_pic"
                android:layout_width="@dimen/_27sdp"
                android:layout_height="@dimen/_27sdp"
                android:layout_marginTop="@dimen/_10sdp"
                android:src="@drawable/guest" />
    
            <TextView
                android:id="@+id/guest_type"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/_5sdp"
                android:gravity="center"
                android:text="@string/metting_room_booking"
                android:textSize="@dimen/_10sdp" />
    
        </LinearLayout>
    
    
    </LinearLayout>
    
    
    
    我的添加访问者活动xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:id="@+id/layout_add_visitor"
        android:layout_height="match_parent"
        android:background="@drawable/mainbg"
        android:orientation="vertical">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="100dp">
    
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="@dimen/_90sdp"
                android:layout_height="@dimen/_49sdp"
                android:layout_centerInParent="true"
                android:background="@drawable/logo" />
        </RelativeLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/_10sdp"
            android:orientation="vertical">
    
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="@dimen/_350sdp"
                android:layout_gravity="center"
                android:elevation="@dimen/_5sdp"
                app:cardCornerRadius="@dimen/_10sdp">
    
                <RelativeLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:orientation="vertical"
                    android:layout_height="match_parent">
    
                    <TextView
                        android:id="@+id/addvisitor_text"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:layout_marginStart="@dimen/_10sdp"
                        android:layout_marginTop="@dimen/_10sdp"
                        android:text="@string/add_new_visitor"
                        android:textColor="@color/Textcolor"
                        android:textSize="@dimen/_15sdp" />
    
                    <TextView
                        android:id="@+id/textView4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/addvisitor_text"
                        android:layout_marginLeft="@dimen/_10sdp"
                        android:layout_marginTop="@dimen/_10sdp"
                        android:text="@string/visitor_type"
                        android:textColor="@color/Textcolor"
                        android:textSize="@dimen/_7sdp" />
    
    
                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/rvNumbers"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:paddingLeft="@dimen/_7sdp"
                        android:paddingRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_60sdp" />
    
                    <LinearLayout
                        android:id="@+id/select_host"
                        android:layout_width="@dimen/_270sdp"
                        android:layout_height="@dimen/_50sdp"
                        android:layout_below="@id/rvNumbers"
                        android:layout_marginLeft="@dimen/_7sdp"
                        android:layout_marginRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_15sdp"
                        android:background="@drawable/borde_view"
                        android:gravity="center"
                        android:orientation="horizontal"
                        android:weightSum="3"
                        android:baselineAligned="false">
    
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="2"
                            android:orientation="vertical">
    
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="@dimen/_10sdp"
                                android:layout_marginTop="@dimen/_5sdp"
                                android:paddingLeft="@dimen/_9sdp"
                                android:text="@string/select_host"
                                android:textSize="@dimen/_7sdp" />
    
                            <AutoCompleteTextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="@dimen/_3sdp"
                                android:hint="@string/jhon_smith"
                                android:paddingStart="@dimen/_9sdp" />
    
    
                        </LinearLayout>
    
                        <LinearLayout
                            android:orientation="vertical"
                            android:layout_width="wrap_content"
                            android:layout_height="match_parent"
                            android:gravity="center"
                            android:weightSum="1">
    
                            <Button
                                android:gravity="center"
                                android:layout_width="@dimen/_44sdp"
                                android:layout_height="@dimen/_26sdp"
                                android:background="@color/CMbuttonColor"
                                android:text="@string/cm"
                                android:textColor="@color/colorWhite" />
    
                        </LinearLayout>
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:layout_width="@dimen/_270sdp"
                        android:layout_height="@dimen/_35sdp"
                        android:layout_below="@id/select_host"
                        android:layout_marginLeft="@dimen/_7sdp"
                        android:layout_marginRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_15sdp"
                        android:background="@drawable/splash_bg"
                        android:orientation="vertical">
                        <Button
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:background="@color/MainLoginButtonColor"
                            android:text="@string/next"
                            android:textColor="@color/colorWhite"
                            android:textSize="@dimen/_10sdp"/>
    
                    </LinearLayout>
    
    
                </RelativeLayout>
            </android.support.v7.widget.CardView>
        </LinearLayout>
    
    </LinearLayout>
    
    
    
    如果项目数据不足以决定要显示哪个,则可以考虑使用包含项目数据和视图状态的包装器VIEWDATA类,如ISButon Studio、IVIULL、…因此,根据ViewData类,您可以决定ViewHolder的UI

    难道您不能至少有礼貌地显示您已经完成的工作吗?如果没有任何代码测试,您的问题的上下文将变得过于宽泛而无法感知。是的,确定我在共享我正在显示可绘图文件夹中的图像,而不是url中的图像
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:id="@+id/layout_add_visitor"
        android:layout_height="match_parent"
        android:background="@drawable/mainbg"
        android:orientation="vertical">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="100dp">
    
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="@dimen/_90sdp"
                android:layout_height="@dimen/_49sdp"
                android:layout_centerInParent="true"
                android:background="@drawable/logo" />
        </RelativeLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="@dimen/_10sdp"
            android:orientation="vertical">
    
            <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="@dimen/_350sdp"
                android:layout_gravity="center"
                android:elevation="@dimen/_5sdp"
                app:cardCornerRadius="@dimen/_10sdp">
    
                <RelativeLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:orientation="vertical"
                    android:layout_height="match_parent">
    
                    <TextView
                        android:id="@+id/addvisitor_text"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:layout_marginStart="@dimen/_10sdp"
                        android:layout_marginTop="@dimen/_10sdp"
                        android:text="@string/add_new_visitor"
                        android:textColor="@color/Textcolor"
                        android:textSize="@dimen/_15sdp" />
    
                    <TextView
                        android:id="@+id/textView4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/addvisitor_text"
                        android:layout_marginLeft="@dimen/_10sdp"
                        android:layout_marginTop="@dimen/_10sdp"
                        android:text="@string/visitor_type"
                        android:textColor="@color/Textcolor"
                        android:textSize="@dimen/_7sdp" />
    
    
                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/rvNumbers"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:paddingLeft="@dimen/_7sdp"
                        android:paddingRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_60sdp" />
    
                    <LinearLayout
                        android:id="@+id/select_host"
                        android:layout_width="@dimen/_270sdp"
                        android:layout_height="@dimen/_50sdp"
                        android:layout_below="@id/rvNumbers"
                        android:layout_marginLeft="@dimen/_7sdp"
                        android:layout_marginRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_15sdp"
                        android:background="@drawable/borde_view"
                        android:gravity="center"
                        android:orientation="horizontal"
                        android:weightSum="3"
                        android:baselineAligned="false">
    
                        <LinearLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_weight="2"
                            android:orientation="vertical">
    
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="@dimen/_10sdp"
                                android:layout_marginTop="@dimen/_5sdp"
                                android:paddingLeft="@dimen/_9sdp"
                                android:text="@string/select_host"
                                android:textSize="@dimen/_7sdp" />
    
                            <AutoCompleteTextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="@dimen/_3sdp"
                                android:hint="@string/jhon_smith"
                                android:paddingStart="@dimen/_9sdp" />
    
    
                        </LinearLayout>
    
                        <LinearLayout
                            android:orientation="vertical"
                            android:layout_width="wrap_content"
                            android:layout_height="match_parent"
                            android:gravity="center"
                            android:weightSum="1">
    
                            <Button
                                android:gravity="center"
                                android:layout_width="@dimen/_44sdp"
                                android:layout_height="@dimen/_26sdp"
                                android:background="@color/CMbuttonColor"
                                android:text="@string/cm"
                                android:textColor="@color/colorWhite" />
    
                        </LinearLayout>
    
                    </LinearLayout>
    
                    <LinearLayout
                        android:layout_width="@dimen/_270sdp"
                        android:layout_height="@dimen/_35sdp"
                        android:layout_below="@id/select_host"
                        android:layout_marginLeft="@dimen/_7sdp"
                        android:layout_marginRight="@dimen/_7sdp"
                        android:layout_marginTop="@dimen/_15sdp"
                        android:background="@drawable/splash_bg"
                        android:orientation="vertical">
                        <Button
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            android:background="@color/MainLoginButtonColor"
                            android:text="@string/next"
                            android:textColor="@color/colorWhite"
                            android:textSize="@dimen/_10sdp"/>
    
                    </LinearLayout>
    
    
                </RelativeLayout>
            </android.support.v7.widget.CardView>
        </LinearLayout>
    
    </LinearLayout>