Skip to content

Commit cfa2dad

Browse files
committed
处理刷新后,indicator 位置不对的问题
1 parent 2478290 commit cfa2dad

File tree

8 files changed

+243
-172
lines changed

8 files changed

+243
-172
lines changed

.idea/workspace.xml

Lines changed: 150 additions & 141 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/zhengsr/viewpagerhelper/MainActivity.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ protected void onCreate(Bundle savedInstanceState) {
2424
super.onCreate(savedInstanceState);
2525
setContentView(R.layout.activity_main);
2626

27-
startActivity(new Intent(this, LoopActivity.class));
28-
29-
3027

3128
}
3229

app/src/main/java/com/zhengsr/viewpagerhelper/activity/loop/NetWorkActivity.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.zhengsr.viewpagerhelper.bean.PageDataInfo;
2424
import com.zhengsr.viewpagerhelper.rx.HttpCreate;
2525
import com.zhengsr.viewpagerhelper.rx.RxUtils;
26+
import com.zhengsr.viewpagerhelper.view.BannerView;
2627
import com.zhengsr.viewpagerlib.bean.PageBean;
2728
import com.zhengsr.viewpagerlib.callback.PageHelperListener;
2829
import com.zhengsr.viewpagerlib.indicator.CircleIndicator;
@@ -43,7 +44,7 @@ public class NetWorkActivity extends AppCompatActivity {
4344
private RecyclerView mRecyclerView;
4445
private List<ArticleData> mArticleBeans = new ArrayList<>();
4546
private ArticleAdapter mAdapter;
46-
private BannerViewPager mBannerView;
47+
private BannerView mBannerView;
4748

4849
@Override
4950
protected void onCreate(Bundle savedInstanceState) {
@@ -57,11 +58,10 @@ private void initView() {
5758
mRecyclerView = findViewById(R.id.recycler);
5859
mRecyclerView.setLayoutManager(manager);
5960
mAdapter = new ArticleAdapter(R.layout.item_article_recy_layout, mArticleBeans);
60-
View headerView = LayoutInflater.from(this).inflate(R.layout.banner_layout,null);
61-
mBannerView = headerView.findViewById(R.id.banner);
62-
CircleIndicator indicator = headerView.findViewById(R.id.banner_indicator);
63-
mBannerView.addIndicator(indicator);
64-
mAdapter.addHeaderView(headerView);
61+
62+
mBannerView = new BannerView(this);
63+
64+
mAdapter.addHeaderView(mBannerView);
6565
mRecyclerView.setAdapter(mAdapter);
6666

6767
loadData();
@@ -72,6 +72,7 @@ public void zengjia(View view) {
7272
loadData();
7373
}
7474

75+
private boolean isSecond;
7576
private void loadData() {
7677
//banner
7778
HttpCreate.getServer().getBanner()
@@ -86,17 +87,8 @@ public void onSubscribe(Disposable d) {
8687
@Override
8788
public void onNext(List<BannerBean> bannerBeans) {
8889

89-
mBannerView.setPageListener(R.layout.banner_item_layout, bannerBeans, new PageHelperListener<BannerBean>() {
90-
@Override
91-
public void bindView(View view, BannerBean data, int position) {
92-
ImageView imageView = view.findViewById(R.id.banner_icon);
93-
TextView textView = view.findViewById(R.id.banner_text);
94-
Glide.with(NetWorkActivity.this)
95-
.load(data.getImagePath())
96-
.into(imageView);
97-
textView.setText(data.getTitle());
98-
}
99-
});
90+
mBannerView.setData(bannerBeans);
91+
mAdapter.notifyDataSetChanged();
10092

10193

10294
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.zhengsr.viewpagerhelper.view;
2+
3+
import android.content.Context;
4+
import android.content.Intent;
5+
import android.support.annotation.NonNull;
6+
import android.support.annotation.Nullable;
7+
import android.util.AttributeSet;
8+
import android.view.LayoutInflater;
9+
import android.view.View;
10+
import android.widget.FrameLayout;
11+
import android.widget.ImageView;
12+
13+
import com.bumptech.glide.Glide;
14+
import com.zhengsr.viewpagerhelper.R;
15+
import com.zhengsr.viewpagerhelper.bean.BannerBean;
16+
import com.zhengsr.viewpagerlib.callback.PageHelperListener;
17+
import com.zhengsr.viewpagerlib.indicator.CircleIndicator;
18+
import com.zhengsr.viewpagerlib.view.BannerViewPager;
19+
20+
21+
import java.util.List;
22+
23+
/**
24+
* Created by zhengshaorui
25+
* time: 2018/9/2
26+
*/
27+
28+
public class BannerView extends FrameLayout {
29+
30+
31+
private View mView;
32+
private BannerViewPager mBannerViewPager;
33+
34+
public BannerView(@NonNull Context context) {
35+
this(context,null);
36+
}
37+
38+
public BannerView(@NonNull Context context, @Nullable AttributeSet attrs) {
39+
super(context, attrs);
40+
41+
removeAllViews();
42+
mView = LayoutInflater.from(getContext()).inflate(R.layout.banner_layout,this,false);
43+
addView(mView);
44+
45+
mBannerViewPager = mView.findViewById(R.id.banner);
46+
CircleIndicator indicator = mView.findViewById(R.id.banner_indicator);
47+
48+
mBannerViewPager.addIndicator(indicator);
49+
}
50+
51+
52+
public void setData(List<BannerBean> beans){
53+
if (beans != null && beans.size() >0){
54+
55+
mBannerViewPager.setPageListener(R.layout.banner_item_layout, beans, new PageHelperListener<BannerBean>() {
56+
@Override
57+
public void bindView(View view, BannerBean data, int position) {
58+
// setText(view,R.id.banner_text,data.getTitle());
59+
ImageView imageView = view.findViewById(R.id.banner_icon);
60+
Glide.with(getContext())
61+
.load(data.getImagePath())
62+
.into(imageView);
63+
}
64+
});
65+
66+
}
67+
}
68+
69+
70+
71+
72+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
app:cir_normalColor="@color/white_ff"
3434
app:cir_selectedColor="@color/white"
3535
app:cir_size="5dp"
36-
app:cir_rect_width="13dp"
37-
app:cir_horizon_margin="10dp"
36+
app:cir_rect_width="15dp"
37+
app:cir_horizon_margin="15dp"
3838
/>
3939
</FrameLayout>
4040
</android.support.v7.widget.CardView>

viewpagerlib/src/main/java/com/zhengsr/viewpagerlib/indicator/CircleIndicator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,12 @@ public CircleIndicator(Context context, @Nullable AttributeSet attrs, int defSty
109109
*/
110110
public void addPagerData(int count, ViewPager viewPager) {
111111

112+
/**
113+
* 还原一些状态
114+
*/
112115
removeAllViews();
116+
mMoveDistance = 0;
117+
113118
if (count == 0) {
114119
return;
115120
}

viewpagerlib/src/main/java/com/zhengsr/viewpagerlib/indicator/RectIndicator.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ public void addPagerData(int count, ViewPager viewPager) {
9090
return;
9191
}
9292
mCount = count;
93-
if (mCount == 0) {
94-
return;
95-
}
93+
9694
GradientDrawable drawable = new GradientDrawable();
9795
drawable.setShape(GradientDrawable.RECTANGLE);
9896
drawable.setSize(mRectWidth, mRectHeight);

viewpagerlib/src/main/java/com/zhengsr/viewpagerlib/view/BannerViewPager.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public void handleMessage(Message msg) {
9292
}
9393
}
9494
};
95+
private CusViewPagerAdapter adapter;
9596

9697

9798
public BannerViewPager(Context context) {
@@ -250,6 +251,7 @@ public BannerViewPager addPageBean(PageBean bean) {
250251
public <T> void setPageListener(int layoutId, final List<T> datas, final PageHelperListener<T> listener) {
251252
//先停止动画
252253
stopAnim();
254+
mCurrentIndex = 0;
253255
if (datas == null || datas.isEmpty()) {
254256
return;
255257
}
@@ -267,19 +269,15 @@ public <T> void setPageListener(int layoutId, final List<T> datas, final PageHel
267269
/**
268270
* 判断是否上次有 adapter 的存在
269271
*/
270-
if (getAdapter() !=null) {
271-
setAdapter(null);
272-
}else{
273-
setOffscreenPageLimit(3);
274-
}
275272

276273
listener.setDatas(mDatas);
277-
CusViewPagerAdapter adapter = new CusViewPagerAdapter<T>(datas, layoutId, listener);
274+
adapter = new CusViewPagerAdapter<T>(datas, layoutId, listener);
278275
setAdapter(adapter);
279276
int startSelectItem = getStartSelectItem(dataCount);
280277
startSelectItem += mCurrentIndex;
281278
setCurrentItem(startSelectItem);
282279

280+
setOffscreenPageLimit(3);
283281

284282

285283
if (mIndicator != null) {

0 commit comments

Comments
 (0)