怎样在外层获取自定义viewpage类中的List当前的位置,当滑动时把位置传给外层更新UI
时间: 2024-02-15 13:01:24 浏览: 73
您可以通过在自定义ViewPager类中添加一个回调接口来实现此功能。首先,您需要创建一个名为`OnPageChangeListener`的接口,该接口包含一个`onPageChanged(int position)`方法,用于在页面更改时通知外部类。然后,在您的自定义ViewPager类中,您需要设置一个`OnPageChangeListener`监听器,以便在页面更改时调用回调方法并传递新位置。最后,在您的外部类中,您需要实现`OnPageChangeListener`接口,并在其中更新UI。
以下是一个示例代码:
```
public class CustomViewPager extends ViewPager {
private OnPageChangeListener mListener;
public CustomViewPager(Context context) {
super(context);
init();
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
// 设置OnPageChangeListener监听器
super.addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
// do nothing
}
@Override
public void onPageSelected(int position) {
// 页面更改后,调用回调方法并传递新位置
if (mListener != null) {
mListener.onPageChanged(position);
}
}
@Override
public void onPageScrollStateChanged(int state) {
// do nothing
}
});
}
// 设置OnPageChangeListener监听器
public void setOnPageChangeListener(OnPageChangeListener listener) {
mListener = listener;
}
// 自定义OnPageChangeListener接口
public interface OnPageChangeListener {
void onPageChanged(int position);
}
}
```
在您的外部类中,您可以这样使用:
```
public class MainActivity extends AppCompatActivity implements CustomViewPager.OnPageChangeListener {
private CustomViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = findViewById(R.id.view_pager);
// 设置OnPageChangeListener监听器
mViewPager.setOnPageChangeListener(this);
}
@Override
public void onPageChanged(int position) {
// 页面更改后,更新UI
// ...
}
}
```
阅读全文