Android 重置CirclePageIndicator库
我想在我的ListView中延迟加载图像。我将图像放入,然后还为ViewPager设置了一个:Android 重置CirclePageIndicator库,android,viewpagerindicator,Android,Viewpagerindicator,我想在我的ListView中延迟加载图像。我将图像放入,然后还为ViewPager设置了一个: public void fetchDrawableOnThread(final ViewPager viewPager, final CirclePageIndicator indicator) { final Handler handler = new Handler() { @Override public void ha
public void fetchDrawableOnThread(final ViewPager viewPager, final CirclePageIndicator indicator) {
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
ImagePagerAdapter adapter = new ImagePagerAdapter((Drawable[]) message.obj);
viewPager.setAdapter(adapter);
indicator.setViewPager(viewPager);
}
};
Thread thread = new Thread() {
@Override
public void run() {
Drawable[] drawables = fetchDrawables();
Message message = handler.obtainMessage(1, drawables);
handler.sendMessage(message);
}
};
thread.start();
}
这是我在主活动中的自定义适配器类:
private class MultiAdapter extends ArrayAdapter<String> {
public MultiAdapter(Context context, ArrayList<String> mStrings) {
super(context, R.layout.list_main, mStrings);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (convertView == null) {
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.list_main, parent, false);
} else
row = convertView;
ViewPager viewPager = (ViewPager) row.findViewById(R.id.pager);
CirclePageIndicator indicator = (CirclePageIndicator)row.findViewById(R.id.indicator);
if(scroll_is_idle)
drawableMng.fetchDrawableOnThread(viewPager, indicator);
else {
viewPager.setAdapter(null);
}
return row;
}
}
私有类多适配器扩展了ArrayAdapter{
公共多适配器(上下文上下文、ArrayList mStrings){
super(上下文、R.layout.list_main、mStrings);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
查看行;
if(convertView==null){
LayoutInflater充气机=getLayoutInflater();
行=充气机。充气(R.layout.list_main,parent,false);
}否则
行=转换视图;
ViewPager ViewPager=(ViewPager)row.findViewById(R.id.pager);
CirclePageIndicator=(CirclePageIndicator)行findViewById(R.id.indicator);
如果(滚动\u为\u空闲)
drawableMng.fetchDrawableOnThread(查看页面、指示器);
否则{
viewPager.setAdapter(空);
}
返回行;
}
}
在我的getView方法中,当滚动条不处于空闲模式时,我想
将viewPager adapter设置为null
,这会在PageIndicator库中产生问题(nullPointerException)。您知道如何重置页面指示器以避免此问题吗?我知道此逻辑可能不太好:
if(scroll_is_idle)
drawableMng.fetchDrawableOnThread(viewPager, indicator);
else
viewPager.setAdapter(null);
但顺便说一句,它在库中的onDraw方法中产生了一个问题,出现了nullPoniterException
我通过编辑onDraw并将mviewPage.getAdapter()==null
添加到条件中解决了问题:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mViewPager == null || mViewPager.getAdapter() == null) {
return;
}
可以将其添加到主库中吗@杰克沃顿