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