1、分割线:
实现分割线的代码写在一个Activity类中,其中两个内部类重写了ItemDecoration实现分割线效果;
GridDividerItemDecoration:
这个类实现了表格分割线效果;
LinearDividerItemDecoration:
这个类实现类似ListView的分割线效果,支持水平和垂直方向;
package com.longshun.recycleviewdemo;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 自定义RecycleView的ItemDecoration
*/
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RecyclerView.ItemDecoration itemDecoration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.rv);
itemDecoration = new LinearDividerItemDecoration(this, LinearLayoutManager.VERTICAL);
recyclerView.addItemDecoration(itemDecoration);
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
final List<String> listStr = new ArrayList<>();
for (int i = 0; i < 29; i++) {
listStr.add("item" + i);
}
final MyAdapter adapter = new MyAdapter(this, listStr);
recyclerView.setAdapter(adapter);
//交互动画
MyItemTouchHelperCallback callback = new MyItemTouchHelperCallback(new MyItemTouchHelperCallback.ItemSwipeListener() {
@Override
public void onItemSwipe(RecyclerView.ViewHolder viewHolder, int direction) {
//删除数据 更新列表
int position = viewHolder.getAdapterPosition();
listStr.remove(position);
adapter.notifyItemRemoved(position);
}
@Override
public void onItemDrag(RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//交换数据 更新列表
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
Collections.swap(listStr, fromPosition, toPosition);
adapter.notifyItemMoved(fromPosition, toPosition);
}
});
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}