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() を呼び出したときに、すぐに画面を更新しないのはなぜですか?