您的位置:首页 > 其它

Easyrecyclerview 使用体验

2017-11-15 14:31 330 查看
GIT地址
将开发中常用的RecyclerView的各种需求封装进库。提升开发效率。重点在Adapter与viewholder的封装。他们之间彻底解耦。adapter工作更少,仅负责业务逻辑。所以如果你使用mvp架构可以放进presenter层。viewholder负责View展示与Adapter没有任何耦合,将可以到处复用。并不会影响运行效率。并且adapter支持数据管理,Header与Footer添加,加载更多。没有更多。加载错误使用了部分Malinskiy/SuperRecyclerView的代码,将更多功能交给了adapter实现。app/build.gradle
compile 'com.jude:easyrecyclerview:4.4.2'
xml<com.jude.easyrecyclerview.EasyRecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@+id/rl_login_head"android:scrollbarStyle="insideOverlay"app:layout_empty="@layout/layout_view_empty"></com.jude.easyrecyclerview.EasyRecyclerView>PhoneAttrActivity.java
package com.seatel.mobilehall.activity;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.view.View;import com.jude.easyrecyclerview.EasyRecyclerView;import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter;import com.jude.easyrecyclerview.decoration.DividerDecoration;import com.jude.easyrecyclerview.decoration.StickyHeaderDecoration;import com.seatel.mobilehall.R;import com.seatel.mobilehall.adapter.PhoneAttrAdapter;import com.seatel.mobilehall.adapter.StickyHeaderAdapter;import com.seatel.mobilehall.base.BaseActivity;import com.seatel.mobilehall.bean.PhoneAttrBean;import com.seatel.mobilehall.util.SysTools;import java.util.ArrayList;public class PhoneAttrActivity extends BaseActivity {private EasyRecyclerView recyclerView;private PhoneAttrAdapter adapter;private ArrayList<PhoneAttrBean> mData;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_phone_attr);initData();initView();}private void initData() {mData = new ArrayList<>();mData.add(new PhoneAttrBean("柬埔寨","+855"));mData.add(new PhoneAttrBean("中国大陆","+86"));mData.add(new PhoneAttrBean("中国香港","+852"));mData.add(new PhoneAttrBean("中国澳门","+853"));mData.add(new PhoneAttrBean("中国台湾","+886"));mData.add(new PhoneAttrBean("柬埔寨","+855"));mData.add(new Phadf2oneAttrBean("中国大陆","+86"));mData.add(new PhoneAttrBean("中国香港","+852"));mData.add(new PhoneAttrBean("中国澳门","+853"));mData.add(new PhoneAttrBean("中国台湾","+886"));mData.add(new PhoneAttrBean("柬埔寨","+855"));mData.add(new PhoneAttrBean("中国大陆","+86"));mData.add(new PhoneAttrBean("中国香港","+852"));mData.add(new PhoneAttrBean("中国澳门","+853"));mData.add(new PhoneAttrBean("中国台湾","+886"));mData.add(new PhoneAttrBean("柬埔寨","+855"));mData.add(new PhoneAttrBean("中国大陆","+86"));mData.add(new PhoneAttrBean("中国香港","+852"));mData.add(new PhoneAttrBean("中国澳门","+853"));mData.add(new PhoneAttrBean("中国台湾","+886"));mData.add(new PhoneAttrBean("柬埔寨","+855"));mData.add(new PhoneAttrBean("中国大陆","+86"));mData.add(new PhoneAttrBean("中国香港","+852"));}private void initView() {recyclerView = (EasyRecyclerView) findViewById(R.id.recyclerView);recyclerView.setLayoutManager(new LinearLayoutManager(this));DividerDecoration itemDecoration = new DividerDecoration(Color.LTGRAY, SysTools.dip2px(this, 0.5f), 0, 0);itemDecoration.setDrawLastItem(false);recyclerView.addItemDecoration(itemDecoration);adapter = new PhoneAttrAdapter(this);recyclerView.setAdapter(adapter);adapter.addAll(mData);recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));// StickyHeaderStickyHeaderDecoration decoration = new StickyHeaderDecoration(new StickyHeaderAdapter(this));decoration.setIncludeHeader(false);recyclerView.addItemDecoration(decoration);findViewById(R.id.login_close).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {finish();}});}}
PhoneAttrAdapter.javapackage com.seatel.mobilehall.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.jude.easyrecyclerview.adapter.BaseViewHolder;import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter;import com.seatel.mobilehall.R;import com.seatel.mobilehall.bean.PhoneAttrBean;/*** Created by ylh on 2017/11/14 0014.*/public class PhoneAttrAdapter extends RecyclerArrayAdapter<PhoneAttrBean>{public PhoneAttrAdapter(Context context) {super(context);}@Overridepublic BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {return new MyViewHodler(parent);}public static class MyViewHodler extends BaseViewHolder<PhoneAttrBean>{TextView mTv;TextView mTvRight;public MyViewHodler(ViewGroup parent) {super(parent,R.layout.view_rv_attr_item);mTv = $(R.id.item_tv);mTvRight = $(R.id.item_tv_right);}@Overridepublic void setData(PhoneAttrBean data) {super.setData(data);mTv.setText(data.getLocation());mTvRight.setText(data.getPhone());}}}StickyHeaderAdapter.javapackage com.seatel.mobilehall.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.jude.easyrecyclerview.decoration.StickyHeaderDecoration;import com.seatel.mobilehall.R;/*** Created by ylh on 2017/11/14 0014.*/public class StickyHeaderAdapter implements StickyHeaderDecoration.IStickyHeaderAdapter<StickyHeaderAdapter.HeaderHolder> {private LayoutInflater mInflater;public StickyHeaderAdapter(Context context) {mInflater = LayoutInflater.from(context);}@Overridepublic long getHeaderId(int position) {return position>4?1:0;}@Overridepublic HeaderHolder onCreateHeaderViewHolder(ViewGroup parent) {final View view = mInflater.inflate(R.layout.header_item, parent, false);return new HeaderHolder(view);}@Overridepublic void onBindHeaderViewHolder(HeaderHolder viewholder, int position) {if (getHeaderId(position) == 0) {viewholder.header.setText("常用");} else {viewholder.header.setText("国家");}}class HeaderHolder extends RecyclerView.ViewHolder {public TextView header;public HeaderHolder(View itemView) {super(itemView);header = (TextView) itemView.findViewById(R.id.item_tv);}}}效果图上拉刷新:recyclerView.setRefreshListener(this);@Overridepublic void onRefresh() {recyclerView.postDelayed(new Runnable() {@Overridepublic void run() {adapter.clear();adapter.addAll(mData);}},1000);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: