0

10 要素の配列を含む PagerAdapter があります。

private Object[] pageViewerList;

私はそれを埋めます ArrayList

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

各ページにはスクロールビューが含まれています。scrollview には linearLayout が含まれています。Linear Layout には多くの異なる要素が含まれており、それらの参照は前述の 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 に答える