滚动时回收视图重叠项目

时间:2016-12-12 06:23:10

标签: android android-recyclerview recycler-adapter

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

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

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

我在google上搜索并获得了覆盖该方法的解决方案。

 @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;
    }


}

XMl文件list_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>

0 个答案:

没有答案