RecyclerView超级万能适配器(多布局、head、foot、下拉刷新、上拉自动更多、滑动删除)
使用方法
GitHub
APK下载
将libray模块复制到项目中,或者直接在build.gradle中依赖:
allprojects {repositories {maven { url 'https://jitpack.io' }}}
- 1
- 2
- 3
- 4
- 5
- 6
dependencies {compile 'com.github.AnJiaoDe:RecyclerViewAdapter:V1.1.2'}
- 1
- 2
- 3
- 4
注意:如果sync报错,是因为和com.android.tools.build:gradle 3.0有关,
可以改将compile改为implementation 或者api
在没有万能RV适配器的时候是这样写代码的
private class CurrHolder extends RecyclerView.ViewHolder implementsOnClickListener, ItemSelectListener {ImageView album, menu;TextView title, artist;View splite, state;Music music;public CurrHolder(View view) {super(view);album = (ImageView) view.findViewById(R.id.music_item_album);menu = (ImageView) view.findViewById(R.id.music_item_menu);title = (TextView) view.findViewById(R.id.music_item_title);artist = (TextView) view.findViewById(R.id.music_item_artist);splite = view.findViewById(R.id.music_item_splite);state = view.findViewById(R.id.music_item_state);menu.setImageResource(mTheme.isColorTheme() ? R.drawable.ic_item_menu: R.drawable.ic_item_menu_w);if (splite != ) {splite.setBackgroundColor(mTheme.getDividerColor());}state.setBackgroundColor(mTheme.color);itemView.setOnClickListener(this);ViewUtil.setViewBg(itemView, mTheme.getItemSelector());}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
构造方法能写到怀疑人生
有万能适配的时候是这样写代码的
List<VRBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRBean("内容"+i));}rvAdapter = new RVAdapter<VRBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击" + position);}};((VerticalRecyclerView) findViewById(R.id.vr)).setAdapter(rvAdapter);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
流水线式编程,各种复制粘贴
1.VerticalRecyclerView
1.1VR
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.VerticalRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/vr"android:layout_width="match_parent"android:layout_height="match_parent" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.VerticalRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRBean;import java.util.ArrayList;
import java.util.List;public class VRActivity extends BaseActivity {private RVAdapter<VRBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vr2);List<VRBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRBean("内容"+i));}rvAdapter = new RVAdapter<VRBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击" + position);}};((VerticalRecyclerView) findViewById(R.id.vr)).setAdapter(rvAdapter);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
1.2VR+MultiLayout
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.VerticalRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/vr"android:layout_width="match_parent"android:layout_height="match_parent" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.VerticalRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRMultiBean;import java.util.ArrayList;
import java.util.List;public class VRMultiActivity extends BaseActivity {private RVAdapter<VRMultiBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vrmulti);final List<VRMultiBean> list = new ArrayList<>();list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}, 1));list.add(new VRMultiBean("hi偶尔几个技能奇偶及会计进口国家囧囧而考虑过就没看了交集高科技奇偶及会计胡歌奇偶及会计",new int[]{R.drawable.pic5, R.drawable.pic4, R.drawable.pic3}, 2));list.add(new VRMultiBean("货物挤公交我黑狗竟然换个我哦我合计好几个我囧囧积极 囧囧囧囧囧窘境及囧窘境囧囧健康人格和基金囧囧花给你们",new int[]{R.drawable.pic4, R.drawable.pic5, R.drawable.pic3}, 3));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic4, R.drawable.pic2, R.drawable.pic1}, 1));list.add(new VRMultiBean("货物挤公交我黑狗乐观我乳胶管我哦惹急hi偶然和基金法科技馆一积极几颗 自己进欧冠竟然换个我哦健康人格和基金囧囧花给你们",new int[]{R.drawable.pic4, R.drawable.pic5, R.drawable.pic3}, 3));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}, 1));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic4, R.drawable.pic2, R.drawable.pic1}, 2));list.add(new VRMultiBean("货物挤公交我黑狗乐观我乳胶管我哦惹急hi偶然和基金法科技馆一积极几颗 自己进欧冠竟然换个我哦健康人格和基金囧囧花给你们",new int[]{R.drawable.pic4, R.drawable.pic5, R.drawable.pic3}, 3));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}, 1));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic4, R.drawable.pic2, R.drawable.pic1}, 2));list.add(new VRMultiBean("货物挤公交我黑狗乐观我乳胶管我哦惹急hi偶然和基金法科技馆一积极几颗 自己进欧冠竟然换个我哦健康人格和基金囧囧花给你们",new int[]{R.drawable.pic4, R.drawable.pic5, R.drawable.pic3}, 2));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}, 1));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic4, R.drawable.pic2, R.drawable.pic1}, 2));list.add(new VRMultiBean("货物挤公交我黑狗乐观我乳胶管我哦惹急hi偶然和基金法科技馆一积极几颗 自己进欧冠竟然换个我哦健康人格和基金囧囧花给你们",new int[]{R.drawable.pic4, R.drawable.pic5, R.drawable.pic3}, 3));list.add(new VRMultiBean("忒囧途押金我积极偶就开个会积极自己交给鸡攻击huiyhuhuio8u9ehjkgh会祸害过",new int[]{R.drawable.pic1, R.drawable.pic2, R.drawable.pic3}, 1));rvAdapter = new RVAdapter<VRMultiBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRMultiBean bean, boolean isSelected) {switch (bean.getView_type()) {case 1:holder.setText(R.id.tv,bean.getTitle());holder.setImageResource(R.id.iv,bean.getResID()[0]);holder.setOnClickListener(R.id.tv, new View.OnClickListener() {@Overridepublic void onClick(View v) {showToast("点击文字");}});break;case 2:holder.setText(R.id.tv,bean.getTitle());holder.setImageResource(R.id.iv_1,bean.getResID()[0]);holder.setImageResource(R.id.iv_2,bean.getResID()[1]);holder.setImageResource(R.id.iv_3,bean.getResID()[2]);holder.setOnClickListener(R.id.tv, new View.OnClickListener() {@Overridepublic void onClick(View v) {showToast("点击文字");}});break;case 3:holder.setText(R.id.tv,bean.getTitle());holder.setImageResource(R.id.iv,bean.getResID()[0]);holder.setOnClickListener(R.id.tv, new View.OnClickListener() {@Overridepublic void onClick(View v) {showToast("点击文字");}});break;}}@Overridepublic int getItemLayoutID(int position, VRMultiBean bean) {switch (bean.getView_type()) {case 1:return R.layout.item_pic_right;case 2:return R.layout.item_pic_bottom;case 3:return R.layout.item_pic_one_bottom;}return 1;}@Overridepublic void onItemClick(int position, VRMultiBean bean) {showToast("点击"+position);}};((VerticalRecyclerView) findViewById(R.id.vr)).setAdapter(rvAdapter);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
1.3VR+head+foot
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.VerticalRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/vr"android:layout_width="match_parent"android:layout_height="match_parent" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.VerticalRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRHeadFootBean;import java.util.ArrayList;
import java.util.List;public class VRHeadFootActivity extends BaseActivity {private RVAdapter<VRHeadFootBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vr);List<VRHeadFootBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRHeadFootBean("内容"+i));}rvAdapter=new RVAdapter<VRHeadFootBean>(list,true,true) {@Overridepublic void bindDataToHeadView(MyViewHolder holder) {super.bindDataToHeadView(holder);}@Overridepublic void bindDataToFootView(MyViewHolder holder) {super.bindDataToFootView(holder);}@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRHeadFootBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRHeadFootBean bean) {if (position==0){return R.layout.head;}if (position==getItemCount()-1){return R.layout.foot;}return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRHeadFootBean bean) {showToast("点击"+position);}@Overridepublic void onItemHeadClick() {super.onItemHeadClick();showToast("点击head");}@Overridepublic void onItemFootClick() {super.onItemFootClick();showToast("点击foot");}};((VerticalRecyclerView) findViewById(R.id.vr)).setAdapter(rvAdapter);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
1.4VR+Refresh+LoadMore
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/vrl"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRBean;
import com.lcodecore.tkrefreshlayout.RefreshListenerAdapter;
import com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout;import java.util.ArrayList;
import java.util.List;public class VRRefreshLoadMoreActivity extends BaseActivity {private RVAdapter<VRBean> rvAdapter;private VerticalRefreshLayout verticalRefreshLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vrrefresh);verticalRefreshLayout= (VerticalRefreshLayout) findViewById(R.id.vrl);List<VRBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRBean("内容"+i));}rvAdapter = new RVAdapter<VRBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击" + position);}};verticalRefreshLayout.setAdapter(rvAdapter, getResources().getColor(R.color.colorPrimary),new RefreshListenerAdapter() {@Overridepublic void onRefresh(TwinklingRefreshLayout refreshLayout) {super.onRefresh(refreshLayout);}@Overridepublic void onLoadMore(TwinklingRefreshLayout refreshLayout) {super.onLoadMore(refreshLayout);}});}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
1.5VR+Refresh
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/vrl"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.refreshrv.BaseRefreshLayout;
import com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRBean;import java.util.ArrayList;
import java.util.List;public class VRRefreshActivity extends BaseActivity {private RVAdapter<VRBean> rvAdapter;private VerticalRefreshLayout verticalRefreshLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vrrefresh2);verticalRefreshLayout= (VerticalRefreshLayout) findViewById(R.id.vrl);List<VRBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRBean("内容"+i));}rvAdapter = new RVAdapter<VRBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击" + position);}};verticalRefreshLayout.setAdapter(rvAdapter, getResources().getColor(R.color.colorPrimary),new BaseRefreshLayout.OnCYRefreshListener() {@Overridepublic void onRefresh() {}});}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
1.6VR+LoadMore
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/vrl"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.refreshrv.BaseRefreshLayout;
import com.cy.cyrvadapter.refreshrv.VerticalRefreshLayout;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRBean;import java.util.ArrayList;
import java.util.List;public class VRLoadMoreActivity extends BaseActivity {private RVAdapter<VRBean> rvAdapter;private VerticalRefreshLayout verticalRefreshLayout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vrload_more);verticalRefreshLayout= (VerticalRefreshLayout) findViewById(R.id.vrl);List<VRBean> list = new ArrayList<>();for (int i=0;i<100;i++){list.add(new VRBean("内容"+i));}rvAdapter = new RVAdapter<VRBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_rv;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击" + position);}};verticalRefreshLayout.setAdapter(rvAdapter, getResources().getColor(R.color.colorPrimary),new BaseRefreshLayout.OnCYLoadMoreLister() {@Overridepublic void onLoadMore() {}});}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
1.7VR+Swipe
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.SwipeRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/srv"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.recyclerview.SwipeRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
package com.cy.recyclerviewadapter.activity.vr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.SwipeRVAdapter;
import com.cy.cyrvadapter.recyclerview.SwipeRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.VRBean;import java.util.ArrayList;public class VRSwipeActivity extends BaseActivity {private SwipeRVAdapter<VRBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_vrswipe);final ArrayList<VRBean> list_bean = new ArrayList<VRBean>();for (int i = 0; i < 100; i++) {list_bean.add(new VRBean("内容"+i));}rvAdapter = new SwipeRVAdapter<VRBean>(list_bean) {@Overridepublic void bindSwipeDataToView(MyViewHolder holder, int position, VRBean bean, boolean isSelected) {holder.setText(R.id.tv, bean.getStr());holder.setOnClickListener(R.id.tv_zhiding, new View.OnClickListener() {@Overridepublic void onClick(View v) {rvAdapter.closeOpenedSL();showToast("点击置顶");}});holder.setOnClickListener(R.id.tv_biaoweiweidu, new View.OnClickListener() {@Overridepublic void onClick(View v) {rvAdapter.closeOpenedSL();showToast("点击标为未读");}});holder.setOnClickListener(R.id.layout_delete, new View.OnClickListener() {@Overridepublic void onClick(View v) {rvAdapter.closeOpenedSL();showToast("点击删除");}});}@Overridepublic int getItemLayoutID(int position, VRBean bean) {return R.layout.item_swipe;}@Overridepublic void onItemClick(int position, VRBean bean) {showToast("点击内容");}};((SwipeRecyclerView)findViewById(R.id.srv)).setAdapter(rvAdapter);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
2.HorizontalRecyclerView
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.HorizontalRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/hrv"android:layout_width="match_parent"android:layout_height="300dp"></com.cy.cyrvadapter.recyclerview.HorizontalRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
package com.cy.recyclerviewadapter.activity.hr;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.HorizontalRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;import java.util.ArrayList;
import java.util.List;public class HRVActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_hrv);List<HRVBean> list = new ArrayList<>();for (int i=0;i<10;i++){if (i%5==0){list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic1));}rvAdapter = new RVAdapter<HRVBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv,bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {return R.layout.item_hrv;}@Overridepublic void onItemClick(int position, HRVBean bean) {}};((HorizontalRecyclerView)findViewById(R.id.hrv)).setAdapter(rvAdapter);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
3.GridRecyclerView
3.1GRV
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.GridRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/grv"android:paddingRight="10dp"android:paddingBottom="10dp"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.recyclerview.GridRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
package com.cy.recyclerviewadapter.activity.grv;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.GridRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;import java.util.ArrayList;
import java.util.List;public class GRVActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_grv);List<HRVBean> list = new ArrayList<>();for (int i=0;i<100;i++){if (i%5==0){list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic1));}rvAdapter=new RVAdapter<HRVBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv,bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {return R.layout.item_grv;}@Overridepublic void onItemClick(int position, HRVBean bean) {}};((GridRecyclerView)findViewById(R.id.grv)).setAdapter(rvAdapter,3,false,false);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
3.2GRV+head+foot
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.GridRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/grv"android:paddingRight="10dp"android:paddingBottom="10dp"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.recyclerview.GridRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
package com.cy.recyclerviewadapter.activity.grv;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.GridRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;import java.util.ArrayList;
import java.util.List;public class GRVHeadFootActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_grvhead_foot);List<HRVBean> list = new ArrayList<>();for (int i = 0; i < 99; i++) {if (i % 5 == 0) {list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic1));}rvAdapter = new RVAdapter<HRVBean>(list, true, true) {@Overridepublic void bindDataToHeadView(MyViewHolder holder) {super.bindDataToHeadView(holder);}@Overridepublic void bindDataToFootView(MyViewHolder holder) {super.bindDataToFootView(holder);}@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv, bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {if (position == 0) {return R.layout.head;}if (position == getItemCount() - 1) {return R.layout.foot;}return R.layout.item_grv;}@Overridepublic void onItemClick(int position, HRVBean bean) {}@Overridepublic void onItemHeadClick() {super.onItemHeadClick();}@Overridepublic void onItemFootClick() {super.onItemFootClick();}};((GridRecyclerView) findViewById(R.id.grv)).setAdapter(rvAdapter, 3,true,true);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
3.3GRV+Refresh+LoadMore
package com.cy.recyclerviewadapter.activity.grv;import android.os.Bundle;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.refreshrv.GridRefreshLayout;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;
import com.lcodecore.tkrefreshlayout.RefreshListenerAdapter;
import com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout;import java.util.ArrayList;
import java.util.List;public class GRVRefreshLoadMoreActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_grvrefresh_load_more);List<HRVBean> list = new ArrayList<>();for (int i=0;i<100;i++){if (i%5==0){list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic1));}rvAdapter=new RVAdapter<HRVBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv,bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {return R.layout.item_grv;}@Overridepublic void onItemClick(int position, HRVBean bean) {}};((GridRefreshLayout)findViewById(R.id.grl)).setAdapter(rvAdapter, 3, false, false,getResources().getColor(R.color.colorPrimary),new RefreshListenerAdapter() {@Overridepublic void onRefresh(TwinklingRefreshLayout refreshLayout) {super.onRefresh(refreshLayout);}@Overridepublic void onLoadMore(TwinklingRefreshLayout refreshLayout) {super.onLoadMore(refreshLayout);}});}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
4.StaggeredGridRecyclerView
4.1SGRV
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/grv"android:paddingRight="10dp"android:paddingBottom="10dp"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
package com.cy.recyclerviewadapter.activity.sgrv;import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.SGRVBean;import java.util.ArrayList;
import java.util.List;public class SGRVActivity extends BaseActivity {private RVAdapter<SGRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sgrv);List<SGRVBean> list = new ArrayList<>();for (int i = 0; i < 100; i++) {if (i % 5 == 0) {list.add(new SGRVBean("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3367190441,1778923800&fm=27&gp=0.jpg","接地极给客人就公开房间观看然后呢开飞机后肌肉及推介会IT界hi让他开户及"));continue;}list.add(new SGRVBean("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1523372810354&di=f4e6cb5fbef06087acb322973b8cf432&imgtype=0&src=http%3A%2F%2Fimg3.duitang.com%2Fuploads%2Fitem%2F201605%2F11%2F20160511200420_WxrRN.jpeg","个哥哥"));}rvAdapter = new RVAdapter<SGRVBean>(list) {@Overridepublic void bindDataToView(final MyViewHolder holder, int position, SGRVBean bean, boolean isSelected) {holder.setText(R.id.tv,bean.getText());holder.setImage(R.id.iv,bean.getUrl());}@Overridepublic int getItemLayoutID(int position, SGRVBean bean) {return R.layout.item_sgrv;}@Overridepublic void onItemClick(int position, SGRVBean bean) {showToast("点击" + position);}};((StaggeredGridRecyclerView) findViewById(R.id.grv)).setAdapter(rvAdapter, 3, RecyclerView.VERTICAL);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
4.2SGRV+head+foot
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/grv"android:paddingRight="10dp"android:paddingBottom="10dp"android:layout_width="match_parent"android:layout_height="match_parent"></com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
package com.cy.recyclerviewadapter.activity.sgrv;import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.recyclerview.StaggeredGridRecyclerView;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;import java.util.ArrayList;
import java.util.List;public class SGRVHeadFootActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sgrvhead_foot);List<HRVBean> list = new ArrayList<>();for (int i = 0; i < 99; i++) {if (i % 5 == 0) {list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic7));}rvAdapter = new RVAdapter<HRVBean>(list, true,true,true) {@Overridepublic void bindDataToHeadView(MyViewHolder holder) {super.bindDataToHeadView(holder);}@Overridepublic void bindDataToFootView(MyViewHolder holder) {super.bindDataToFootView(holder);}@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv, bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {if (position == 0) {return R.layout.head;}if (position == getItemCount() - 1) {return R.layout.foot;}return R.layout.item_grv;}@Overridepublic void onItemClick(int position, HRVBean bean) {showToast("点击"+position);}@Overridepublic void onItemHeadClick() {super.onItemHeadClick();}@Overridepublic void onItemFootClick() {super.onItemFootClick();}};((StaggeredGridRecyclerView) findViewById(R.id.grv)).setAdapter(rvAdapter, 3, RecyclerView.VERTICAL);}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
4.3SGRV+Refresh+LoadMore
<?xml version="1.0" encoding="utf-8"?>
<com.cy.cyrvadapter.refreshrv.StaggeredGridRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/sgrl"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="10dp"android:layout_marginRight="10dp"></com.cy.cyrvadapter.refreshrv.StaggeredGridRefreshLayout>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
package com.cy.recyclerviewadapter.activity.sgrv;import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.view.View;import com.cy.cyrvadapter.adapter.RVAdapter;
import com.cy.cyrvadapter.refreshrv.StaggeredGridRefreshLayout;
import com.cy.recyclerviewadapter.BaseActivity;
import com.cy.recyclerviewadapter.R;
import com.cy.recyclerviewadapter.bean.HRVBean;
import com.lcodecore.tkrefreshlayout.RefreshListenerAdapter;
import com.lcodecore.tkrefreshlayout.TwinklingRefreshLayout;import java.util.ArrayList;
import java.util.List;public class SGRVRefreshLoadMoreActivity extends BaseActivity {private RVAdapter<HRVBean> rvAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_sgrvrefresh_load_more);List<HRVBean> list = new ArrayList<>();for (int i=0;i<100;i++){if (i%5==0){list.add(new HRVBean(R.drawable.pic3));continue;}list.add(new HRVBean(R.drawable.pic7));}rvAdapter=new RVAdapter<HRVBean>(list) {@Overridepublic void bindDataToView(MyViewHolder holder, int position, HRVBean bean, boolean isSelected) {holder.setImageResource(R.id.iv,bean.getResID());}@Overridepublic int getItemLayoutID(int position, HRVBean bean) {return R.layout.item_grv;}@Overridepublic void onItemClick(int position, HRVBean bean) {}};((StaggeredGridRefreshLayout)findViewById(R.id.sgrl)).setAdapter(rvAdapter, 3, RecyclerView.VERTICAL,getResources().getColor(R.color.colorPrimary),new RefreshListenerAdapter() {@Overridepublic void onRefresh(TwinklingRefreshLayout refreshLayout) {super.onRefresh(refreshLayout);}@Overridepublic void onLoadMore(TwinklingRefreshLayout refreshLayout) {super.onLoadMore(refreshLayout);}});}@Overridepublic void onClick(View v) {}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
RVAdapter:
可自行在holder中扩展任意方法
package com.cy.cyrvadapter.adapter;import android.graphics.Bitmap;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;import com.cy.cyrvadapter.bitmap.GlideUtils;import java.util.Collection;
import java.util.List;/*** Created by lenovo on 2017/6/24.*/public abstract class RVAdapter<T> extends RecyclerView.Adapter<RVAdapter.MyViewHolder> {private List<T> list_bean;private boolean haveHeadView = false;private boolean haveFootView = false;private boolean isStaggeredGrid = false;private int selectedPosition = 0; //默认选中位置private int lastSelectedPosition = 0; //上次选中位置public RVAdapter(List<T> list_bean) {this.list_bean = list_bean;}public RVAdapter(List<T> list, boolean isStaggeredGrid) {this.list_bean = list;this.isStaggeredGrid = isStaggeredGrid;}public RVAdapter(List<T> list_bean, boolean haveHeadView, boolean haveFootView) {this.haveFootView = haveFootView;this.haveHeadView = haveHeadView;this.list_bean = list_bean;if (haveHeadView) {selectedPosition = 1;lastSelectedPosition = 1;}}public RVAdapter(List<T> list_bean, boolean isStaggeredGrid, boolean haveHeadView, boolean haveFootView) {this.isStaggeredGrid = isStaggeredGrid;this.haveFootView = haveFootView;this.haveHeadView = haveHeadView;this.list_bean = list_bean;if (haveHeadView) {selectedPosition = 1;lastSelectedPosition = 1;}}@Overridepublic final MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false));}@Overridepublic final void onBindViewHolder(final MyViewHolder holder, final int position) {if (isStaggeredGrid) {// 获取cardview的布局属性,记住这里要是布局的最外层的控件的布局属性,如果是里层的会报cast错误StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
// 最最关键一步,设置当前view占满列数,这样就可以占据两列实现头部了if (haveHeadView) {if (haveFootView && position == getItemCount() - 1) {layoutParams.setFullSpan(true);}if (position == 0) {layoutParams.setFullSpan(true);}} else if (haveFootView) {if (position == getItemCount() - 1) {layoutParams.setFullSpan(true);}}}//添加Item的点击事件holder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (haveHeadView) {if (position == 0) {onItemHeadClick();return;}if (haveFootView) {if (position == getItemCount() - 1) {onItemFootClick();return;}}} else {if (haveFootView) {if (position == getItemCount() - 1) {onItemFootClick();return;}}}if (haveHeadView) {onItemClick(position, list_bean.get(position - 1));} else {onItemClick(position, list_bean.get(position));}if (lastSelectedPosition == position) {return;}selectedPosition = position; //选择的position赋值给参数,notifyItemChanged(selectedPosition);notifyItemChanged(lastSelectedPosition);lastSelectedPosition = position;}});//有头部if (haveHeadView) {if (position == 0) {
// if (list_bean.size() > 0) {bindDataToHeadView(holder);
// }return;}if (haveFootView) {if (position == getItemCount() - 1) {
// if (list_bean.size() > 0) {bindDataToFootView(holder);
// }return;}}if (position == selectedPosition) {bindDataToView(holder, position - 1, list_bean.get(position - 1), true);} else {bindDataToView(holder, position - 1, list_bean.get(position - 1), false);}} else {if (haveFootView) {if (position == getItemCount() - 1) {
// if (list_bean.size() > 0) {bindDataToFootView(holder);
// }return;}}if (position == selectedPosition) {bindDataToView(holder, position, list_bean.get(position), true);} else {bindDataToView(holder, position, list_bean.get(position), false);}}}//填充数据public abstract void bindDataToView(MyViewHolder holder, int position, T bean, boolean isSelected);//添加头部public void bindDataToHeadView(MyViewHolder holder) {}//添加尾部public void bindDataToFootView(MyViewHolder holder) {}@Overridepublic final int getItemCount() {if (haveHeadView) {if (haveFootView) {return list_bean.size() + 2;}return list_bean.size() + 1;}if (haveFootView) {return list_bean.size() + 1;}return list_bean.size();}public void removeFoot() {haveFootView = false;notifyDataSetChanged();}public boolean isHaveFootView() {return haveFootView;}/*取得ItemView的布局文件@return*/public abstract int getItemLayoutID(int position, T bean);@Overridepublic final int getItemViewType(int position) {if (haveHeadView) {if (haveFootView && position == getItemCount() - 1) {return getItemLayoutID(position, );}return getItemLayoutID(position, position == 0 ? : list_bean.get(position - 1));}if (haveFootView && position == getItemCount() - 1) {return getItemLayoutID(position, );}return getItemLayoutID(position, list_bean.get(position));}public int getRealItemCount() {return list_bean.size();}/*ItemView的单击事件@param position*/public abstract void onItemClick(int position, T bean);public void onItemHeadClick() {}public void onItemFootClick() {}public void onItemLongClick(int position) {}public void onItemHeadLongClick() {}public void onItemFootLongClick() {}public void remove(int position) {list_bean.remove(position);notifyDataSetChanged();}public void add(T bean) {list_bean.add(bean);notifyDataSetChanged();}public void addNoNotify(T bean) {list_bean.add(bean);}public void addToHead(T bean) {list_bean.add(0, bean);notifyDataSetChanged();}public int addAll(List<T> beans) {list_bean.addAll(beans);notifyDataSetChanged();return beans.size();}public void addAll(Collection<T> c) {list_bean.addAll(c);notifyDataSetChanged();}public int clearAddAll(List<T> beans) {list_bean.clear();list_bean.addAll(beans);notifyDataSetChanged();return beans.size();}public void addAllToHead(List<T> beans) {list_bean.addAll(0, beans);notifyDataSetChanged();}public void clear() {list_bean.clear();notifyDataSetChanged();}public void clearNoNotify() {list_bean.clear();}public static class MyViewHolder extends RecyclerView.ViewHolder {private SparseArray<View> array_view;public MyViewHolder(View itemView) {super(itemView);array_view = new SparseArray<View>();}public <T extends View> T getView(int viewId) {View view = array_view.get(viewId);if (view == ) {view = itemView.findViewById(viewId);array_view.put(viewId, view);}return (T) view;}public MyViewHolder setVisible(int res_id) {getView(res_id).setVisibility(View.VISIBLE);return this;}public MyViewHolder setInVisible(int res_id) {getView(res_id).setVisibility(View.INVISIBLE);return this;}public void setViewGone(int res_id) {getView(res_id).setVisibility(View.GONE);}public void setViewVisible(int res_id) {getView(res_id).setVisibility(View.VISIBLE);}public void setText(int tv_id, String text) {TextView tv = getView(tv_id);tv.setText(nullToString(text));}public String nullToString(Object object) {return object == ? "" : object.toString();}public void setPriceText(int tv_id, String text) {TextView tv = getView(tv_id);tv.setText("¥" + text);}public void setCountText(int tv_id, String text) {TextView tv = getView(tv_id);tv.setText("x" + text);}public void setCountText(int tv_id, int text) {TextView tv = getView(tv_id);tv.setText("x" + text);}public void setPriceText(int tv_id, int text) {TextView tv = getView(tv_id);tv.setText("¥" + text);}public void setPriceText(int tv_id, float text) {TextView tv = getView(tv_id);tv.setText("¥" + text);}public void setText(int tv_id, int text) {TextView tv = getView(tv_id);tv.setText(String.valueOf(nullToString(text)));}public void setTextColor(int tv_id, int color) {TextView tv = getView(tv_id);tv.setTextColor(color);}public String getTVText(int tv_id) {TextView tv = getView(tv_id);return tv.getText().toString().trim();}public String getETText(int tv_id) {EditText tv = getView(tv_id);return tv.getText().toString().trim();}public void setBackgroundResource(int v_id, int resid) {View view = getView(v_id);view.setBackgroundResource(resid);}public void setImageBitmap(int v_id, Bitmap bitmap) {ImageView view = getView(v_id);view.setImageBitmap(bitmap);}public void setImageResource(int v_id, int resID) {ImageView view = getView(v_id);view.setImageResource(resID);}public void setImage(int iv_id, String url, int width, int height, int default_res) {ImageView iv = getView(iv_id);GlideUtils.loadImageByGlide(itemView.getContext(), url, iv, width, height);}public void setImage(int iv_id, String url) {ImageView iv = getView(iv_id);GlideUtils.loadImageByGlide(itemView.getContext(), url, iv);}public void setImage(int iv_id, String url, int width, int height) {ImageView iv = getView(iv_id);GlideUtils.loadImageByGlide(itemView.getContext(), url, iv, width, height);}public void setProgress(int progress_id, int progress) {ProgressBar progressBar = getView(progress_id);progressBar.setProgress(progress);}public void setOnClickListener(int res_id, View.OnClickListener onClickListener) {getView(res_id).setOnClickListener(onClickListener);}public void setOnLongClickListener(int res_id, View.OnLongClickListener onLongClickListener) {getView(res_id).setOnLongClickListener(onLongClickListener);}}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
参考:ListView、RecyclerView、GridView
GitHub
CSDN
简书
微信公众号
QQ群
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css"></div>
RecyclerView超级万能适配器(多布局、head、foot、下拉刷新、上拉自动更多、滑动删除)相关推荐
- Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)
转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉载入,网上的Demo太多太多了,这 ...
- Android 下拉刷新上拉加载 多种应用场景 超级大放送(上)
转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉加载,网上的Demo太多太多了,这 ...
- Android滑动冲突解决方式(下拉刷新上拉加载更多,适配RecyclerView/ListView/ScrollView)
一.Android事件的分发机制 这里需要了解下Andorid事件的分发机制.事件分发一般是针对一组事件,即ACTION_DOWN > ACTION_UP 或 ACTION_DOWN > ...
- MVP+OKHttp+Recyclerview+Springview下拉刷新上拉加载
//activity -main布局 依赖 compile 'com.android.support:recyclerview-v7:25.0.0-alpha1' //springview实现上下拉的 ...
- RecyclerView 下拉刷新上拉加载
步骤: 首先直接定义一个XRecyclerView继承RecyclerView,重写他的三个构造方法. init(Context mContext)方法用来初始化底部加载的view 回到XRecycl ...
- 打造Android万能下拉刷新上拉加载控件
转载请注明出处:http://blog.csdn.net/binbinqq86/article/details/70159782 关于列表刷新加载的自定义控件,网上数不胜数,但别人的用起来始终不是那么 ...
- android 官方上拉,手把手教你实现RecyclerView的下拉刷新和上拉加载更多
纵观多数App,下拉刷新和上拉加载更多是很常见的功能,但是谷歌官方只有一个SwipeRefreshLayout用来下拉刷新,上拉加载更多还要自己做. 基于RecyclerView简单封装了这两个操作, ...
- 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多
原文地址: http://blog.csdn.net/leoleohan/article/details/50989549/ 一.概述 我们公司目前开发的所有Android APP都是遵循iOS风格设 ...
- 采用SwipeFreshLayout+Recyclerview实现下拉刷新和上拉加载更多以及CoordinatorLayout的引入
之前都是采用PullToRefresh进行下拉刷新和下拉加载,现在采用谷歌自己的控件SwipeFreshLayout,配合Recyclerview来实现这一效果.使用SwipeRefreshLayou ...
最新文章
- 局部敏感哈希(Locality Sensitive Hashing)二三问[2]
- java解析c上传十六进制_磕代码c/c++/java:十六进制转十进制
- 评分卡上线后如何进行评分卡的监测
- 分布式系统架构与云原生—阿里云《云原生架构白皮书》导读
- nacos 本地测试_一文详解 Nacos 高可用特性
- JAVA 几种多线程的简单实例 Thread Runnable
- c/c++面试试题(三)
- eclipse中为了format的代码更加好看,少换行,可以设置java、xml、jsp的代码line width。
- 又一国产新机定价逆天!网友:千万不要作...
- centen os7 源码安装git2.17.0
- 凯辉基金与法投行完成对资管软件公司NeoXam的投资 加速企业国际化发展布局
- n1进入recovery模式_斐讯N1盒子刷机救砖教程
- 算法-舍弃不吉利数字
- 计算机路由器无线级联配置,两个无线路由器级联怎么设置?
- 键盘上的按键--键码 对应表
- CocosEditor For JS (Cocos2d-JS) 教程聚合和代码下载
- Android多维商品属性SKU选择
- 思科交换机配置ipv6实验
- 【黑金动力社区】【FPGA黑金开发板】Verilog HDL的礼物 - Verilog HDL扫盲文
- android 换 苹果,第一次从安卓手机换到苹果,会有哪些特别不适应的地方?
热门文章
- nginx-rtmp 的部署
- 前端H5新增标签和CSS3高级
- 带你读懂《深入理解计算机系统》开篇
- 当有人推荐你读什么书时你是属于哪一种
- python游戏编程快速上手pdf_Python游戏编程快速上手 (斯维加特著) 中文pdf完整版[18MB]...
- 【Vegas原创】华为一键强制关闭后台应用的终极解决方法
- 微信小程序的分享链接
- 创新指南|如何以STEPPS模型6招打造病毒式传播产品
- /和/*的区别和用法
- 开启全面屏体验 | 手势导航 (一)