package mcxtzhang.recyclerviewdemo.itemtouchhelper;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.widget.Toast;
import com.mcxtzhang.commonadapter.rv.CommonAdapter;
import com.mcxtzhang.commonadapter.rv.ViewHolder;
import java.util.Collections;
import java.util.List;
import mcxtzhang.recyclerviewdemo.R;
import mcxtzhang.recyclerviewdemo.nestrv.TestBean;
import static mcxtzhang.recyclerviewdemo.nestrv.TestBean.fakerDatas;
public class TestItemHelperActivity extends AppCompatActivity {
RecyclerView mRv;
List<TestBean> mDatas;
CommonAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRv = (RecyclerView) findViewById(R.id.rv);
mRv.setLayoutManager(new LinearLayoutManager(this));
mRv.setAdapter(mAdapter = new CommonAdapter<TestBean>(this, mDatas = fakerDatas(), R.layout.item_test_drag) {
@Override
public void convert(ViewHolder holder, TestBean testBean) {
holder.setText(R.id.tv, testBean.getName());
}
});
//0则不执行拖动或者滑动
ItemTouchHelper.Callback mCallback = new ItemTouchHelper.SimpleCallback(/*ItemTouchHelper.UP */0, ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();//得到拖动ViewHolder的position
int toPosition = target.getAdapterPosition();//得到目标ViewHolder的position
if (fromPosition < toPosition) {
//分别把中间所有的item的位置重新交换
for (int i = fromPosition; i < toPosition; i++) {
Collections.swap(mDatas, i, i + 1);
}
} else {
for (int i = fromPosition; i > toPosition; i--) {
Collections.swap(mDatas, i, i - 1);
}
}
mAdapter.notifyItemMoved(fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
Toast.makeText(TestItemHelperActivity.this, "滑动了:" + direction, Toast.LENGTH_SHORT).show();
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(mCallback);
itemTouchHelper.attachToRecyclerView(mRv);
}
}