首先穿件一个ReportBaseCell
package com.ankoninc.esdiagnose.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.ankoninc.esdiagnose.R;
public class ReportBaseCell extends LinearLayout {
private TextView mTitleView;
private WrappedButton mButton;
private String mTitle;
public ReportBaseCell(Context context) {
this(context, null);
}
public ReportBaseCell(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ReportBaseCell(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ReportCellItem);
if (a != null) {
mTitle = a.getString(R.styleable.ReportCellItem_reportTitleText);
a.recycle();
}
setupViews(context);
}
private void setupViews(Context context) {
setOrientation(VERTICAL);
View titleContainer = inflate(context, R.layout.report_cell_title, this);
mTitleView = (TextView) titleContainer.findViewById(R.id.title);
mTitleView.setText(mTitle);
mButton = (WrappedButton) titleContainer.findViewById(R.id.button);
}
public void setTitle(int resId) {
mTitleView.setText(resId);
}
public void setTitle(String text) {
mTitleView.setText(text);
}
public void setButtonText(int resId) {
mButton.setText(resId);
}
public void setButtonText(String text) {
mButton.setText(text);
}
public void setButtonClickListener(OnClickListener listener) {
mButton.setOnClickListener(listener);
}
public void setButtonVisibility(boolean visible) {
mButton.setVisibility(visible ? VISIBLE : GONE);
}
}
第二步:
package com.ankoninc.esdiagnose.view;
import android.content.Context;
import android.graphics.Point;
import android.graphics.PointF;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
import com.ankoninc.data.MedicalExamination;
import com.ankoninc.esdiagnose.R;
import com.ankoninc.esdiagnose.report.DragManager;
import com.ankoninc.esdiagnose.report.DragState;
import com.ankoninc.esdiagnose.report.ReportImageAdapter;
import com.ankoninc.imageview.model.DownloadResult;
import com.ankoninc.imageview.model.ImageDiagnoseItem;
import com.ankoninc.utils.Log;
import java.util.List;
/**
* 报告图片的,item之间可移动交换
* Created by zengna on 2016/6/8.
*/
public class ReportImageCell extends ReportBaseCell implements RecyclerView.OnItemTouchListener, ReportImageAdapter.ImageDragListener {
private static final String LOG_TAG = "ReportImageCell";
private TextView mNotifyView;
private RecyclerView mImageContainer;
private ReportImageAdapter mAdapter;
private GridLayoutManager mLayoutManager;
private DragManager dragManager;
private final PointF dragTouchPoint = new PointF();
private MedicalExamination mPatientExamination;
private DownloadResult mDownloadResult;
private ImageListener mImageListener;
private GestureDetector mGestureDetector;
public ReportImageCell(Context context) {
this(context, null);
}
public ReportImageCell(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ReportImageCell(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setupViews(context);
init(context);
}
private void setupViews(Context context) {
setTitle(R.string.report_examination_image);
setButtonText(R.string.finish);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.swi