scrollview不在viewpager中刷新

时间:2012-07-19 11:46:09

标签: android scrollview page-refresh viewpage

我有一个PagerAdapter,它包含一个10个元素的数组。

private Object[] pageViewerList;

我填充它ArrayList

ArrayList<View> array = new ArrayList<View>();
pageViewerList[y] = new ArrayList<View>();

每个页面都包含一个滚动视图。 scrollview包含linearLayout。线性布局包含许多不同的元素,这些引用存储在前面提到的ArrayList中。

@Override
    public void startUpdate(ViewGroup arg0) {
        Log.v(Constans.TAG, "currentCikkElementsPosition: "+FMFramework.currentCikkElementsPosition);

        ArrayList<View> viewList = (ArrayList<View>) pageViewerList[FMFramework.currentCikkElementsPosition];
        if (viewList!=null){
            setFontSizeAndColor(viewList);
        }
    }

private void setFontSizeAndColor(ArrayList<View> viewList){
        double rate = 1.5;
        if (Constans.READ_MODE_DAY.equals(readMode)){
            for (int i = 0; i < viewList.size(); i++) {
                if (viewList.get(i).getTag().equals(TAG_TITLE)){((TextView)viewList.get(i)).setTextColor(Color.BLACK);((TextView)viewList.get(i)).setTextSize((int)(rate*CIKK_CIM_TEXT_SIZE));continue;}
                if (viewList.get(i).getTag().equals(TAG_LEAD)){((TextView)viewList.get(i)).setTextColor(Color.BLACK);((TextView)viewList.get(i)).setTextSize((int)(rate*CIKK_LEAD_TEXT_SIZE));continue;}
                if (viewList.get(i).getTag().equals(TAG_DATE)){((TextView)viewList.get(i)).setTextSize((int)(rate*CIKK_DATUM_TEXT_SIZE));continue;}
            }
        } else {
            for (int i = 0; i < viewList.size(); i++) {
                if (viewList.get(i).getTag().equals(TAG_TITLE)){((TextView)viewList.get(i)).setTextColor(Color.WHITE);((TextView)viewList.get(i)).setTextSize((int)(rate*CIKK_CIM_TEXT_SIZE));continue;}
                if (viewList.get(i).getTag().equals(TAG_LEAD)){((TextView)viewList.get(i)).setTextColor(Color.WHITE);((TextView)viewList.get(i)).setTextSize((int)(rate*CIKK_LEAD_TEXT_SIZE));continue;}

            }
        }
    }

当我更改视图背景(在LinearLayout中)时,屏幕会刷新,因为我使用的是startUpdate PagerAdapter方法。

但只有第一个和最后一个滚动视图。如果我调用notifyDataSetChanged()方法到适配器,当我停留在中间页面时,不工作刷新。但如果我滚动顶部或底部清新完成。 当我调用notifyDataSetChanged()?

时,为什么不立即刷新屏幕

1 个答案:

答案 0 :(得分:0)

我忘了一件事。我使用自己的scrollview:

public class LimitScrollView extends ScrollView{

    Context mContext;
    private ImageView bottonImage;
    private ImageView topImage;

    public LimitScrollView(Context context, AttributeSet attrs) {
        super(context,attrs);
        this.mContext = context;
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        View view = (View) getChildAt(getChildCount()-1);


        int diff = (view.getBottom()-(getHeight()+getScrollY()));

        if( diff == 0 ){
            bottonImage.setVisibility(ImageView.GONE);
        } else {
            bottonImage.setVisibility(ImageView.VISIBLE);
        }
        if( getScrollY() == 0 ){
            topImage.setVisibility(ImageView.GONE);
        } else {
            topImage.setVisibility(ImageView.VISIBLE);
        }

    super.onScrollChanged(l, t, oldl, oldt);
    }

}