Easyrecyclerview 使用体验
来源:互联网 发布:数据接口的功能 编辑:程序博客网 时间:2024/06/04 01:14
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.EasyRecyclerView android: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; @Override protected 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 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")); 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)); // StickyHeader StickyHeaderDecoration decoration = new StickyHeaderDecoration(new StickyHeaderAdapter(this)); decoration.setIncludeHeader(false); recyclerView.addItemDecoration(decoration); findViewById(R.id.login_close).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); }}
PhoneAttrAdapter.java
package 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); } @Override public 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); } @Override public void setData(PhoneAttrBean data) { super.setData(data); mTv.setText(data.getLocation()); mTvRight.setText(data.getPhone()); } }}
StickyHeaderAdapter.java
package 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); } @Override public long getHeaderId(int position) { return position>4?1:0; } @Override public HeaderHolder onCreateHeaderViewHolder(ViewGroup parent) { final View view = mInflater.inflate(R.layout.header_item, parent, false); return new HeaderHolder(view); } @Override public 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);@Override public void onRefresh() { recyclerView.postDelayed(new Runnable() { @Override public void run() { adapter.clear(); adapter.addAll(mData); } },1000); }
阅读全文
0 0
- Easyrecyclerview 使用体验
- EasyRecyclerView的使用
- EasyRecyclerView的基本使用
- 使用体验
- Android 十分方便的EasyRecyclerView
- 28.Android 十分方便的EasyRecyclerView
- Delphi2005(DiamondBack)使用体验
- Cactus使用体验
- Purify使用体验
- T61P使用体验
- Vista的使用体验
- VS2008TeamSuite en 使用体验
- vmware workstation使用体验
- Morfik使用初体验。
- oracle使用初体验
- chumby使用体验
- ubuntu使用初体验
- VsVim使用体验
- 对于tensorlayer里面的卷积层里面卷积核的理解
- mint ui 使用文档 基于vue.js的移动端ui库
- EditText里的清除按钮
- osgEarth全景图 29. skyview1.earth
- easyui datagrid 获得编辑后的数据
- Easyrecyclerview 使用体验
- html学习记录1
- 实验四-Linux系统管理
- mysql集群的使用与简单测试
- Golang中net/http包源码分析与解释
- 使用百度地图API将输入地址转化成坐标
- 独热编码通俗理解和实例
- compileSdkVersion 'android-24' requires JDK 1.8 or later to compile
- 在Pytorch中实现im2col操作 Implementing im2col in Pytorch