前言:

产生Bug的现象:偶现,下面的内容都是Banner的入口。

产生Bug的原因:首页有两个类型的数据,一个是社区守约(类似于Banner),一个是用户内容(是一个RecyclerView),所以在adapter中需要去定义两种类型然后使用getItemViewType,具体怎么实现就不用说了,最主要的就是在getItemCount这个方法里我返回了以下内容,导致了Bug的产生。

1
2
3
4
5
6
7
8
@Override
public int getItemCount() {
if(list != null && list.size() >0 ){
return list.size();
} else {
return 0;
}
}

其实这个方法中应该返回的是 return 2;返回一共有多少种类型,而不是返回用户数据大小,我们需要在用户内容的viewHolder重新设置适配器,上面的代码应该是新设置的adapter的里内容。

这个问题的解决导致了另一个问题的出现,那就是置顶功能的失效。。。内心是有点崩溃的,好不容易解决了一个Bug另一个Bug又出现。没办法,继续改吧。

我是找了一个封装好的一个方法来调用的,具体来看看怎么用吧,这就是那个方法。

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
public class GoTopScrollView extends ScrollView implements OnClickListener
{
private ImageView goTopBtn;

private int screenHeight;

public GoTopScrollView(Context context, AttributeSet attrs)
{
super(context, attrs);
}

public void setScrollListener(ImageView goTopBtn)
{
this.goTopBtn = goTopBtn;
this.goTopBtn.setOnClickListener(this);
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
super.onScrollChanged(l, t, oldl, oldt);
/**
* 滑动距离超过500px,出现向上按钮,可以做为自定义属性
*/
if (t >= 500)
{
goTopBtn.setVisibility(View.VISIBLE);
}
else
{
goTopBtn.setVisibility(View.GONE);
}
}

@Override
public void onClick(View v)
{
if (v.getId() == R.id.btn_top)
{
this.smoothScrollTo(0, 0);
}
}
}

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
需要在xml中引入,这个就是看你需要在那个页面中引入了,

<com.example.tzrj.tools.GoTopScrollView
android:id="@+id/wallet_GoTopScrollView"
android:layout_width="match_parent"
android:scrollbars="none"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/zhiheView"
android:layout_width="match_parent"
android:overScrollMode="never"
android:layout_height="match_parent" />
</com.example.tzrj.tools.GoTopScrollView>
//这个置顶的图片也别忘了
<ImageButton
android:id="@+id/btn_top"
android:layout_gravity="right"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="20dp"
android:layout_marginRight="20dp"
android:visibility="gone"
android:background="@drawable/btn_top" />
1
2
3
4
//在你所需的页面中调用
btn_top = (ImageButton) view.findViewById(R.id.btn_top);
wallet_GoTopScrollView = (GoTopScrollView) view.findViewById(R.id.wallet_GoTopScrollView);
wallet_GoTopScrollView.setScrollListener(btn_top);