我有一个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()?
时,为什么不立即刷新屏幕答案 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);
}
}