0

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

private Object[] pageViewerList;

我填充它 ArrayList

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

每个页面都包含一个滚动视图。滚动视图包括一个线性布局。线性布局包含许多不同的元素,它们的引用存储在前面提到的 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() 时,为什么不立即刷新屏幕?

4

1 回答 1

0

我忘记了一件事。我使用自己的滚动视图:

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);
    }

}
于 2012-07-19T13:03:08.980 回答