8000 +):1.更新SwipeRefreshLayout+RecyclerView+CardView使用实例代码功能; · lhwCoding/FastDev4Android@eee9841 · GitHub
[go: up one dir, main page]

Skip to content

Commit eee9841

Browse files
committed
+):1.更新SwipeRefreshLayout+RecyclerView+CardView使用实例代码功能;
2.新增演示gif图
1 parent b3bedaf commit eee9841

File tree

7 files changed

+197
-11
lines changed

7 files changed

+197
-11
lines changed

app/src/main/java/com/chinaztt/fda/test/ComInstance/ComInstanceActivity.java

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package com.chinaztt.fda.test.ComInstance;
22

33
import android.os.Bundle;
4+
import android.os.Handler;
5+
import android.support.v4.widget.SwipeRefreshLayout;
46
import android.support.v7.widget.GridLayoutManager;
57
import android.support.v7.widget.RecyclerView;
68
import android.view.View;
79
import android.widget.LinearLayout;
810
import android.widget.TextView;
11+
import android.widget.Toast;
912

1013
import com.chinaztt.fda.ui.R;
1114
import com.chinaztt.fda.ui.base.BaseActivity;
1215

16+
import java.util.ArrayList;
17+
import java.util.List;
18+
1319
/**
1420
* 当前类注释:
1521
* 项目名:FastDev4Android
@@ -23,18 +29,87 @@ public class ComInstanceActivity extends BaseActivity {
23 8000 29
private LinearLayout top_bar_linear_back;
2430
private TextView top_bar_title;
2531
private RecyclerView instance_recycler;
32+
private ComInstanceAdapter adapter;
33+
private SwipeRefreshLayout instance_swiperefreshlayout;
34+
private int lastVisibleItem;
35+
private GridLayoutManager gridLayoutManager;
36+
//是否正在加载更多的标志
37+
private boolean isMoreLoading=false;
2638
@Override
2739
protected void onCreate(Bundle savedInstanceState) {
2840
super.onCreate(savedInstanceState);
2941
setContentView(R.layout.com_instance_layout);
3042
top_bar_linear_back=(LinearLayout)this.findViewById(R.id.top_bar_linear_back);
43+
instance_swiperefreshlayout=(SwipeRefreshLayout)this.findViewById(R.id.instance_swiperefreshlayout);
44+
//设置刷新时动画的颜色,可以设置4个
45+
instance_swiperefreshlayout.setProgressBackgroundColorSchemeResource(android.R.color.white);
46+
instance_swiperefreshlayout.setColorSchemeResources(android.R.color.holo_blue_light,
47+
android.R.color.holo_red_light, android.R.color.holo_orange_light,
48+
android.R.color.holo_green_light);
3149
top_bar_linear_back.setOnClickListener(new CustomOnClickListener());
3250
top_bar_title=(TextView)this.findViewById(R.id.top_bar_title);
3351
top_bar_title.setText("综合实例");
3452
instance_recycler=(RecyclerView)this.findViewById(R.id.instance_recycler);
35-
GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
53+
final GridLayoutManager gridLayoutManager=new GridLayoutManager(this,2);
3654
instance_recycler.setLayoutManager(gridLayoutManager);
37-
instance_recycler.setAdapter(new ComInstanceAdapter(this,InstanceDataUtils.getInstanceBeans()));
55+
instance_recycler.setAdapter(adapter = new ComInstanceAdapter(this, InstanceDataUtils.getInstanceBeans()));
56+
//添加Item点击监听事件
57+
adapter.setOnItemClickListener(new ComInstanceAdapter.OnItemClickListener() {
58+
@Override
59+
public void onItemClick(View view, int position) {
60+
Toast.makeText(ComInstanceActivity.this,"点击了第"+position+"项",Toast.LENGTH_SHORT).show();
61+
}
62+
});
63+
//下拉刷新
64+
instance_swiperefreshlayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
65+
@Override
66+
public void onRefresh() {
67+
new Handler().postDelayed(new Runnable() {
68+
@Override
69+
public void run() {
70+
List<InstanceBean> temp=new ArrayList<InstanceBean>();
71+
for(int i=0;i<5;i++){
72+
InstanceBean bean=new InstanceBean("我是杨颖Item"+i,R.drawable.baby);
73+
temp.add(bean);
74+
}
75+
adapter.addRefreshBeans(temp);
76+
instance_swiperefreshlayout.setRefreshing(false);
77+
Toast.makeText(ComInstanceActivity.this, "更新了五条数据...", Toast.LENGTH_SHORT).show();
78+
}
79+
},3500);
80+
}
81+
});
82+
//上拉加载更多
83+
instance_recycler.setOnScrollListener(new RecyclerView.OnScrollListener() {
84+
@Override
85+
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
86+
super.onScrollStateChanged(recyclerView, newState);
87+
if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 == adapter.getItemCount()) {
88+
if(!isMoreLoading){
89+
isMoreLoading=true;
90+
new Handler().postDelayed(new Runnable() {
91+
@Override
92+
public void run() {
93+
List<InstanceBean> temp=new ArrayList<InstanceBean>();
94+
for (int i = 0; i < 5; i++) {
95+
InstanceBean bean=new InstanceBean("我是MoreItem"+i,R.drawable.meinv);
96+
temp.add(bean);
97+
}
98+
adapter.addMoreBeans(temp);
99+
Toast.makeText(ComInstanceActivity.this, "上拉加载了五条数据...", Toast.LENGTH_SHORT).show();
100+
isMoreLoading=false;
101+
}
102+
},2000);
103+
}
104+
}
105+
}
106+
107+
@Override
108+
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
109+
super.onScrolled(recyclerView, dx, dy);
110+
lastVisibleItem = gridLayoutManager.findLastVisibleItemPosition();
111+
}
112+
});
38113

39114
}
40115
class CustomOnClickListener implements View.OnClickListener{

app/src/main/java/com/chinaztt/fda/test/ComInstance/ComInstanceAdapter.java

Lines changed: 91 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
import android.view.ViewGroup;
88
import android.widget.ImageView;
99
import android.widget.TextView;
10-
1110
import com.chinaztt.fda.ui.R;
1211

12+
import java.util.ArrayList;
1313
import java.util.List;
1414

1515
/**
@@ -21,29 +21,66 @@
2121
* QQ: 781931404
2222
* 公司:江苏中天科技软件技术有限公司
2323
*/
24-
public class ComInstanceAdapter extends RecyclerView.Adapter<ComInstanceAdapter.ItemViewHolder> {
24 10000 +
public class ComInstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
2525
private Context mContext;
2626
private List<InstanceBean> mInstanceBeans;
2727
private LayoutInflater mInflater;
28+
29+
//布局新增一项类别
30+
//普通ITEM
31+
private static final int ITEM_VIEW=1;
32+
//FOOT ITEM
33+
private static final int FOOT_VIEW=2;
34+
2835
public ComInstanceAdapter(Context context,List<InstanceBean> pInstanceBeans){
2936
this.mContext=context;
3037
this.mInstanceBeans=pInstanceBeans;
3138
mInflater=LayoutInflater.from(this.mContext);
3239
}
3340
@Override
34-
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
35-
View view=mInflater.inflate(R.layout.com_instance_item_layout,parent,false);
36-
return new ItemViewHolder(view);
41+
public RecyclerView.ViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
42+
if (viewType == ITEM_VIEW) {
43+
final View view = mInflater.inflate(R.layout.com_instance_item_layout, parent, false);
44+
view.setOnClickListener(new View.OnClickListener() {
45+
@Override
46+
public void onClick(View v) {
47+
if (onItemClickListener != null) {
48+
onItemClickListener.onItemClick(view, (int) view.getTag());
49+
}
50+
}
51+
});
52+
return new ItemViewHolder(view);
53+
} else if (viewType == FOOT_VIEW) {
54+
View view = mInflater.inflate(R.layout.instance_load_more_layout, parent, false);
55+
return new FootViewHolder(view);
56+
}
57+
return null;
3758
}
3859
@Override
39-
public void onBindViewHolder(ItemViewHolder holder, int position) {
40-
holder.item_img.setImageResource(mInstanceBeans.get(position).getImg());
41-
holder.item_tv.setText(mInstanceBeans.get(position).getTitle());
60+
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
61+
if(holder instanceof ItemViewHolder){
62+
((ItemViewHolder)holder).item_img.setImageResource(mInstanceBeans.get(position).getImg());
63+
((ItemViewHolder)holder).item_tv.setText(mInstanceBeans.get(position).getTitle());
64+
holder.itemView.setTag(position);
65+
}else if(holder instanceof FootViewHolder){
66+
//上拉加载更多布局数据绑定
67+
}
4268

69+
70+
}
71+
72+
@Override
73+
public int getItemViewType(int position) {
74+
if (position + 1 == getItemCount()) {
75+
return FOOT_VIEW;
76+
} else {
77+
return ITEM_VIEW;
78+
}
4379
}
80+
4481
@Override
4582
public int getItemCount() {
46-
return mInstanceBeans!=null?mInstanceBeans.size():0;
83+
return mInstanceBeans!=null?mInstanceBeans.size()+1:0;
4784
}
4885

4986
public static class ItemViewHolder extends RecyclerView.ViewHolder{
@@ -54,7 +91,52 @@ public ItemViewHolder(View itemView) {
5491
item_img=(ImageView)itemView.findViewById(R.id.item_img);
5592
item_tv=(TextView)itemView.findViewById(R.id.item_tv);
5693
}
94+
}
95+
/**
96+
* 底部FootView布局
97+
*/
98+
public static class FootViewHolder extends RecyclerView.ViewHolder{
99+
private TextView foot_view_item_tv;
100+
public FootViewHolder(View view) {
101+
super(view);
102+
foot_view_item_tv=(TextView)view.findViewById(R.id.foot_view_item_tv);
103+
}
104+
}
105+
106+
/**
107+
* Item 点击监听回调接口
108+
*/
109+
public interface OnItemClickListener {
110+
void onItemClick(View view,int position);
111+
}
112+
private OnItemClickListener onItemClickListener;
57113

114+
public OnItemClickListener getOnItemClickListener() {
115+
return onItemClickListener;
116+
}
117+
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
118+
this.onItemClickListener = onItemClickListener;
58119
}
59120

121+
/**
122+
* 进行下拉刷新数据添加 并且刷新UI
123+
* @param pInstanceBeans
124+
*/
125+
public void addRefreshBeans(List<InstanceBean> pInstanceBeans){
126+
List<InstanceBean> temp=new ArrayList<InstanceBean>();
127+
temp.addAll(pInstanceBeans);
128+
temp.addAll(mInstanceBeans);
129+
mInstanceBeans.removeAll(mInstanceBeans);
130+
mInstanceBeans.addAll(temp);
131+
notifyDataSetChanged();
132+
}
133+
134+
/**
135+
* 进行上拉加载更多 并且刷新UI
136+
* @param pInstanceBeans
137+
*/
138+
public void addMoreBeans(List<InstanceBean> pInstanceBeans){
139+
mInstanceBeans.addAll(pInstanceBeans);
140+
notifyDataSetChanged();
141+
}
60142
}
8.65 KB
Loading
23.1 KB
Loading

app/src/main/res/layout/com_instance_layout.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@
44
android:layout_height="match_parent"
55
android:background="@color/black">
66
<include layout="@layout/common_top_bar_layout"/>
7+
<android.support.v4.widget.SwipeRefreshLayout
8+
android:id="@+id/instance_swiperefreshlayout"
9+
android:layout_width="fill_parent"
10+
android:layout_height="fill_parent"
11+
android:scrollbars="none">
712
<android.support.v7.widget.RecyclerView
813
android:id="@+id/instance_recycler"
914
android:layout_width="fill_parent"
1015
android:layout_height="fill_parent"
1116
android:scrollbars="none"/>
17+
</android.support.v4.widget.SwipeRefreshLayout>
1218
</LinearLayout>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:orientation="vertical" android:layout_width="match_parent"
4+
android:layout_height="45dp"
5+
>
6+
<LinearLayout
7+
android:layout_width="fill_parent"
8+
android:layout_height="45dp"
9+
android:orientation="horizontal"
10+
android:gravity="center">
11+
<ProgressBar
12+
android:layout_width="25dp"
13+
android:layout_height="25dp"
14+
/>
15+
<TextView
16+
android:id="@+id/foot_view_item_tv"
17+
android:layout_marginLeft="4dp"
18+
android:text="上拉加载更多..."
19+
android:textColor="@color/white"
20+
android:layout_width="wrap_content"
21+
android:layout_height="wrap_content" />
22+
</LinearLayout>
23+
</LinearLayout>

screenshots/pull_1.gif

5.7 MB
Loading

0 commit comments

Comments
 (0)
0