RecycleView+BaseRecycleViewAdapterHelper多布局实现

BaseRecycleViewAdapterHelper在githhub上是一个很火的自行封装的RecycleView适配器

集成了大部分列表的需求解决方案。这里主要是讲下BaseRecycleViewAdapterHelper多布局的使用。

 

 

一、

1、在build.gradle的repositories中添加maven{url "https://jitpack.io"}

 

 

 

2、添加依赖,一个是RecycleView,一个是BaseRecyeleViewAdapterHelper

 

compile "com.android.support:recyclerview-v7:25.3.1"
compile "com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.18"

 

 

二、实体类实现MultipleItemEnty

 

public class MultipleItem implements MultiItemEntity{
    public static final int TEXT=1;
    public static final int IMAGE=2;
    public static final int IMAGE_TEXT=3;
    private int itemType;
    private String content;

    public String getContent() {
        return content;
    }

    public MultipleItem(int itemType,String content){
        this.itemType=itemType;
        this.content=content;
    }
    @Override
    public int getItemType() {
        return itemType;
    }
}

 

三、在设置数据的时候,需要设置ItemType

 

private void iniData() {
    for(int i=0;i<15;i++){
        list.add(new MultipleItem(MultipleItem.TEXT,"text"+i));
        list.add(new MultipleItem(MultipleItem.IMAGE_TEXT,"image"+i));
    }
}

 

 

四、继承BaseMultipleItemQuickAdapter,并在适配器构造方法中,addItemType绑定type和layout的关系

 

public class MultipleItemAdapter extends BaseMultiItemQuickAdapter<MultipleItem, BaseViewHolder>{
    public MultipleItemAdapter(Context context, List data) {
        super(data);
        //自定义的多布局
        addItemType(MultipleItem.TEXT,R.layout.item_text);
        addItemType(MultipleItem.IMAGE_TEXT,R.layout.item_image_text);
    }

    @Override
    protected void convert(BaseViewHolder helper, MultipleItem item) {

        switch(helper.getItemViewType()){
            case MultipleItem.TEXT:
                helper.setText(R.id.tv,item.getContent());
                break;
            case MultipleItem.IMAGE_TEXT:
                helper.setImageResource(R.id.imageView,R.mipmap.ic_launcher);
                helper.setText(R.id.tv,item.getContent());
                break;
        }

    }

}

 

 

源码地址:https://github.com/shenshizhong/RecycleViewMultipleItem

 

我的博客:http://blog.csdn.NET/shenshizhong

我的简书:http://www.jianshu.com/users/345daf0211ad/latest_articles

 

 

 

 

 

可以使用ItemTouchHelper实现RecycleView布局的拖拽和滑动删除功能。下面是一个简单的示例代码: 1. 创建ItemTouchHelper.Callback ``` public class MyItemTouchHelperCallback extends ItemTouchHelper.Callback { private final ItemTouchHelperAdapter mAdapter; public MyItemTouchHelperCallback(ItemTouchHelperAdapter adapter) { mAdapter = adapter; } @Override public boolean isLongPressDragEnabled() { return true; } @Override public boolean isItemViewSwipeEnabled() { return true; } @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; return makeMovementFlags(dragFlags, swipeFlags); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { mAdapter.onItemDismiss(viewHolder.getAdapterPosition()); } } ``` 2. 创建ItemTouchHelperAdapter ``` public interface ItemTouchHelperAdapter { void onItemMove(int fromPosition, int toPosition); void onItemDismiss(int position); } ``` 3. 在Adapter实现ItemTouchHelperAdapter接口 ``` public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements ItemTouchHelperAdapter { private List<MyData> mData; ... @Override public void onItemMove(int fromPosition, int toPosition) { MyData item = mData.get(fromPosition); mData.remove(fromPosition); mData.add(toPosition, item); notifyItemMoved(fromPosition, toPosition); } @Override public void onItemDismiss(int position) { mData.remove(position); notifyItemRemoved(position); } } ``` 4. 在Activity或Fragment中添加ItemTouchHelper ``` ItemTouchHelper.Callback callback = new MyItemTouchHelperCallback(mAdapter); ItemTouchHelper touchHelper = new ItemTouchHelper(callback); touchHelper.attachToRecyclerView(mRecyclerView); ``` 注意:以上代码只是示例,具体实现需要根据自己的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值