私は次のアダプターを使用しているビューページャーを持っています。最初のビューがロードされた後は空に見えますが、そうではありません。次のビューにスクロールしてからスクロールすると、コンテンツが表示されます。ViewPagerの最初のビューが空で表示されるのはなぜですか?
import android.content.Context;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
public class MyPagerAdapter extends PagerAdapter {
Context context;
public ArrayList<TextView> mViews;
int layoutResourceId;
public MyPagerAdapter(Context context) {
mViews = new ArrayList<TextView>();
}
@Override
public void destroyItem(View view, int arg1, Object object) {
((ViewPager)view).removeView((View)object);
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public int getCount() {
return mViews.size();
}
@Override
public Object instantiateItem(View view, int position) {
View myView = mViews.get(position);
((ViewPager)view).addView(myView);
return myView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
そして、ここに私の活動から、それを実装するコードです...(「TEXT 0」が打ち上げに現れている)
public void resetPages() {
if (mPageText == null)
return;
mPagerAdapter.mViews.clear();
for (int i = 0; i < mPageText.size(); i++) {
TextView tv = new TextView(this);
tv.setTextSize(mSelectedFontSize);
tv.setText(mPageText.get(i));
tv.setId(i);
tv.setTag(i);
tv.invalidate();
mPagerAdapter.mViews.add(tv);
}
mPagerAdapter.notifyDataSetChanged();
mViewPager.refreshDrawableState();
}
「mResizeTextView」とは何ですか? –
mResizeTextViewは、指定されたスペースに収まるテキストの量を計算するために配置されたカスタムのテキストビューです。私は複数のページにわたって表示する必要がある長い文字列を持っています。現在のところ、デバッグ用のポピュースでのみ表示されています。 – Josh
上記のコードからmResizeTextView行を削除しました。それは、可視性を変更する必要はありません..まだ同じ問題があります。 – Josh