BaseRecyclerViewAdapterHelper之BaseQuickAdapter的基础用法

来源:互联网 发布:淘宝客的返利管理 编辑:程序博客网 时间:2024/06/05 18:05
  • 一个实体类RectclerItem

public class RecyclerItem {    private String title;    private String content;    public RecyclerItem(String title, String content){        this.title = title;        this.content = content;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}
  • 一个基类BaseRecyclerViewActivity

public abstract class BaseRecyclerViewActivity extends BaseActivity         implements SwipeRefreshLayout.OnRefreshListener {    protected TextView titleNameTv;    protected SwipeRefreshLayout swipeRefreshLayout;    protected RecyclerView recyclerView;    @Override    protected int getLayoutResId() {        return R.layout.activity_recyclerview;    }    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        titleNameTv = (TextView) findViewById(R.id.title_name_tv);        swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);        swipeRefreshLayout.setOnRefreshListener(this);        recyclerView.setLayoutManager(new LinearLayoutManager(this));        recyclerView.addItemDecoration(                new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));    }    @Override    public void onRefresh() {        swipeRefreshLayout.postDelayed(new Runnable() {            @Override            public void run() {                swipeRefreshLayout.setRefreshing(false);                onRefreshComplete();            }        },2000);    }    /**     * 获取数据     *     * @param count 设置要获取的数据的数量     * @return     */    protected List<RecyclerItem> getListData(int count) {        if (count == 0)            return null;        List<RecyclerItem> newDatas = new ArrayList<>();        for (int i = 0; i < count; i++) {            if (i%3 == 0) {                newDatas.add(new RecyclerItem("悯农", "唐代诗人李绅", 0));            }else if (i%3 == 1){                newDatas.add(new RecyclerItem("锄禾日当午,", "汗滴禾下土。", 1));            }else if (i%3 == 2){                newDatas.add(new RecyclerItem("谁知盘中餐,  ", "粒粒皆辛苦。", 2));            }        }        return newDatas;    }    protected abstract void onRefreshComplete();}
  • 一个item(view_list_item)的视图文件和适配器QuickAdapter

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/view_list_item_ll"    android:orientation="horizontal" android:layout_width="match_parent"    android:padding="10dp"    android:layout_height="wrap_content">    <ImageView        android:layout_width="40dp"        android:layout_height="40dp"        android:src="@drawable/gardenia"        android:scaleType="centerCrop"/>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="40dp"        android:orientation="vertical">        <TextView            android:id="@+id/list_item_title_tv"            style="@style/TextStyle_14sp_666"            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1.0"            android:gravity="center_vertical"            android:layout_marginLeft="10dp"            android:textStyle="bold"            android:text="标题1" />        <TextView            android:id="@+id/list_item_content_tv"            style="@style/TextStyle_14sp_666"            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1.0"            android:singleLine="true"            android:ellipsize="marquee"            android:marqueeRepeatLimit="marquee_forever"            android:gravity="center_vertical"            android:layout_marginLeft="10dp"            android:text="内容1" />    </LinearLayout></LinearLayout>


public class QuickAdapter extends BaseQuickAdapter<RecyclerItem,BaseViewHolder> {    public QuickAdapter() {        super(R.layout.view_list_item);    }    @Override    protected void convert(BaseViewHolder helper, RecyclerItem item) {        helper.setText(R.id.list_item_title_tv,item.getTitle())                .setText(R.id.list_item_content_tv,item.getContent());        helper.getView(R.id.list_item_content_tv).setSelected(true);    }}


  • 实现类QuickActivity

public class QuickActivity extends BaseRecyclerViewActivity {    private QuickAdapter quickAdapter;    @Override    protected int getLayoutResId() {        return super.getLayoutResId();    }    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        titleNameTv.setText("BaseQuickAdapter的基础使用");        ExtraView headerView = new ExtraView(this);        headerView.setContent("头部,点击添加,长按删除。");        ExtraView footerView = new ExtraView(this);        footerView.setContent("这是我的尾部。");        quickAdapter = new QuickAdapter();        quickAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_RIGHT);        quickAdapter.addHeaderView(headerView);        quickAdapter.addFooterView(footerView);        recyclerView.setAdapter(quickAdapter);        quickAdapter.setNewData(getListData(6));        initListener();    }    private void initListener() {        // item点击事件,功能:显示点击位置        recyclerView.addOnItemTouchListener(new OnItemClickListener() {            @Override            public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) {                ToastUtils.showShortToast(position + quickAdapter.getItem(position).getTitle());            }        });        // 头部视图点击事件,添加数据        quickAdapter.getHeaderLayout().setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                recyclerView.postDelayed(new Runnable() {                    @Override                    public void run() {                        quickAdapter.addData(0,getListData(2));                    }                },500);            }        });        // 头部视图长按事件,删除数据        quickAdapter.getHeaderLayout().setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                recyclerView.postDelayed(new Runnable() {                    @Override                    public void run() {                        for (int i = 0; i < 3; i++) {                            quickAdapter.remove(3);                        }                        recyclerView.scrollToPosition(0);                    }                },500);                return true;            }        });        // item长按事件,功能:删除长按item        recyclerView.addOnItemTouchListener(new OnItemLongClickListener() {            @Override            public void onSimpleItemLongClick(BaseQuickAdapter adapter, final View view,                                               final int position) {                SnackbarUtils.showLongSnackbar(                        view,                        "删除了:" + quickAdapter.getItem(position).getTitle(),                         Color.WHITE,Color.BLACK);                recyclerView.postDelayed(new Runnable() {                    @Override                    public void run() {                        quickAdapter.remove(position);                    }                },500);            }        });        // 加载更多        quickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {            @Override            public void onLoadMoreRequested() {                recyclerView.postDelayed(new Runnable() {                    @Override                    public void run() {                        quickAdapter.addData(getListData(3));                        quickAdapter.loadMoreComplete();                    }                },500);            }        });    }    @Override    protected void onRefreshComplete() {        quickAdapter.addData(0,getListData(1));        recyclerView.scrollToPosition(0);    }}

 

效果图如下:








2 0
原创粉丝点击