Android 循环查看滚动上的重叠项

Android 循环查看滚动上的重叠项,android,android-recyclerview,Android,Android Recyclerview,大家好,我面临回收视图的问题。 im使用带滑动的循环视图更改项目位置功能,用户可以通过长按项目来更改项目位置 所有项目都具有不同类型的视图 一切正常,但当我试图滚动视图时,循环视图中显示的项目会相互重叠 我在谷歌上搜索,得到了一个解决方案,就是覆盖这个方法 @Override public int getItemViewType(int position) { return position; } 当我在适配器类中使用此方法时,我的“滑动以更改视图”功能将停止工作

大家好,我面临回收视图的问题。 im使用带滑动的循环视图更改项目位置功能,用户可以通过长按项目来更改项目位置

所有项目都具有不同类型的视图

一切正常,但当我试图滚动视图时,循环视图中显示的项目会相互重叠

我在谷歌上搜索,得到了一个解决方案,就是覆盖这个方法

 @Override
   public int getItemViewType(int position) {
       return position;
   }
当我在适配器类中使用此方法时,我的“滑动以更改视图”功能将停止工作

有人能解释我为什么会这样吗

下面是整个适配器类

public class CreateEmailAdapter extends RecyclerView.Adapter<CreateEmailAdapter.MyViewHolder> implements ItemTouchHelperAdapter {

    private static final String TAG = "CreateEmailAdapter";

    public int position = 0;

    public ArrayList<CampaignData> List;

    private final OnStartDragListener mDragStartListener;

    public CreateEmailAdapter(ArrayList<CampaignData> List, OnStartDragListener mDragStartListener) {
        this.List = List;
        this.mDragStartListener = mDragStartListener;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        public TextView title;
        public ImageView imageView, imageView2, imageView3;
        RelativeLayout MainListView;


        public MyViewHolder(final View view) {
            super(view);

            parentLayout = (RelativeLayout) view.findViewById(R.id.parentLayout);

            MainListView = (RelativeLayout) view.findViewById(R.id.MainListView);

            title = (TextView) view.findViewById(R.id.MainTitle);

            imageView2 = (ImageView) view.findViewById(R.id.imageViewPopup);

            imageView3 = (ImageView) view.findViewById(R.id.movearrows);

            imageView = (ImageView) view.findViewById(R.id.lytPatternColorDraw);

            parentLayout.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view1) {

                    position = getAdapterPosition();

                    HandleResponse(title.getText().toString(), view1, getAdapterPosition());
                }
            });
        }
    }

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_row, parent, false);
        return new MyViewHolder(mView);
    }

    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {

        CampaignData campaignData = this.List.get(position);

        holder.parentLayout.setTag(campaignData);

        String extraData = campaignData.getExtraData();

        String MediaType = campaignData.getMediaType();

        holder.MainListView.setVisibility(View.VISIBLE);

        holder.title.setText(campaignData.getTitle());

        holder.imageView.setImageResource(campaignData.getimage());

        holder.imageView2.setTag(campaignData); 

        holder.imageView3.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN) {
                    mDragStartListener.onStartDrag(holder);
                }
                return false;
            }
        });
    }

    @Override
    public boolean onItemMove(int fromPosition, int toPosition) {
        Collections.swap(List, fromPosition, toPosition);
        notifyItemMoved(fromPosition, toPosition);
        return true;
    }

    @Override
    public void onItemDismiss(int position) {
        List.remove(position);
        notifyItemRemoved(position);
    }

    @Override
    public int getItemCount() {
        return List.size();
    }

//    @Override
//    public int getItemViewType(int position) {
//        return position;
//    }

    public int getPosition() {
        return position;
    }


}
公共类CreateEmailAdapter扩展了RecyclerView。适配器实现ItemTouchHelperAdapter{
私有静态最终字符串TAG=“CreateEmailAdapter”;
公共int位置=0;
公共阵列列表;
私人决赛开始时,主持人;
公共CreateEmailAdapter(ArrayList列表,OnStartDragListener mDragStartListener){
this.List=List;
this.mDragStartListener=mDragStartListener;
}
公共类MyViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图标题;
公共图像视图、图像视图2、图像视图3;
RelativeLayout主列表视图;
公共MyViewHolder(最终视图){
超级(视图);
parentLayout=(RelativeLayout)view.findViewById(R.id.parentLayout);
MainListView=(RelativeLayout)view.findViewById(R.id.MainListView);
title=(TextView)view.findViewById(R.id.maintTitle);
imageView2=(ImageView)view.findViewById(R.id.imageViewPopup);
imageView3=(ImageView)view.findViewById(R.id.movearrows);
imageView=(imageView)view.findViewById(R.id.lytPatternColorDraw);
parentLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图1){
位置=getAdapterPosition();
HandlerResponse(title.getText().toString(),view1,getAdapterPosition());
}
});
}
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
View mView=LayoutInflater.from(parent.getContext()).flate(R.layout.list_行,parent,false);
返回新的MyViewHolder(mView);
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,内部位置){
活动数据活动数据=this.List.get(位置);
holder.parentLayout.setTag(活动数据);
字符串extraData=activitydata.getExtraData();
字符串MediaType=activitydata.getMediaType();
holder.MainListView.setVisibility(View.VISIBLE);
holder.title.setText(activitydata.getTitle());
holder.imageView.setImageResource(activityData.getimage());
holder.imageView2.setTag(活动数据);
holder.imageView3.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
if(MotionEventCompat.getActionMasked(事件)=MotionEvent.ACTION\u DOWN){
mDragStartListener.onStartDrag(支架);
}
返回false;
}
});
}
@凌驾
公共布尔onItemMove(int-fromPosition,int-toPosition){
集合交换(列表、起始位置、位置);
已移动的项目(从位置、位置);
返回true;
}
@凌驾
公共空间和公共空间(内部位置){
列表。删除(位置);
已移除(位置)的项目;
}
@凌驾
public int getItemCount(){
返回List.size();
}
//@覆盖
//public int getItemViewType(int位置){
//返回位置;
//    }
public int getPosition(){
返回位置;
}
}
XMl文件列表_row.XMl

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parentLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff">

   <RelativeLayout
        android:id="@+id/MainListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/lytGrab"
        android:visibility="visible">

        <LinearLayout
            android:id="@+id/lytPatternColor"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"
            android:gravity="center_vertical"
            android:orientation="horizontal"
            android:paddingBottom="5dp"
            android:paddingTop="5dp">

            <ImageView
                android:id="@+id/movearrows"
                android:layout_width="18dp"
                android:layout_height="36dp"
                android:layout_marginRight="10dp"
                android:background="@drawable/movearrows" />

            <ImageView
                android:id="@+id/lytPatternColorDraw"
                android:layout_width="30dp"
                android:layout_height="40dp"
                android:orientation="vertical" />
        </LinearLayout>

        <TextView
            android:id="@+id/MainTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="14dp"
            android:layout_toRightOf="@+id/lytPatternColor"
            android:gravity="center_vertical"
            android:padding="10dp"
            android:singleLine="true"
            android:text="Title Here "
            android:textColor="#000"
            android:textSize="16sp" />
    </RelativeLayout>

    <!--Copy images   -->
    <LinearLayout
        android:id="@+id/lytGrab"
        android:layout_width="30dp"
        android:layout_height="70dp"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageViewPopup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:src="@drawable/three" />
    </LinearLayout>
</RelativeLayout>

请发布您的
列表_row.xml
和您所说的“重叠”的屏幕截图?