私はAndroidの開発と開発全般に少し慣れていません。水平方向にめくることができる2ページのビューページャーを備えたカスタムレイアウトがあります(これらは問題なく機能します)。最初のページには、ページを埋めるグリッドビューがあります。ただし、それを機能させるために数え切れないほどのさまざまな方法を試しましたが、グリッドビューに画像が表示されず、nullポインター例外が発生します。
ビューページャーを保持するレイアウトファイルがあり、ビューページャーのIDはfontsviewpagerです。次に、2つのページに2つの別々のレイアウトがあり、最初のレイアウトにはグリッドビューがあります。gridviewのIDはitaliclcgridです。
アクティビティは次のとおりです。
public class CalligraphyFontsActivity extends Activity implements
View.OnClickListener {
public Typeface calligraphyfont;
public TextView italiclowercase;
@Override
public void onCreate(Bundle savedInstanceState) {
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
boolean fullscreen = getPrefs.getBoolean("fullscreen", true);
if (fullscreen) {
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
} else {
setTheme(android.R.style.Theme_NoTitleBar);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.calligraphyfonts2);
MyPagerAdapter adapter = new MyPagerAdapter();
ViewPager myPager = (ViewPager) findViewById(R.id.fontsviewpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
ImageView backhomebutton = (ImageView) findViewById(R.id.backhomebutton);
ImageView settingspic = (ImageView) findViewById(R.id.settingspic);
calligraphyfont = Typeface.createFromAsset(getAssets(),
"fonts/MTCORSVA.TTF");
settingspic.setOnClickListener(this);
backhomebutton.setOnClickListener(this);
GridView gridview = (GridView) findViewById(R.id.italiclcgrid);
gridview.setAdapter(new ImageAdapter(this));
}
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some
// attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = { R.drawable.capitalagray,
R.drawable.capitalbgray, R.drawable.capitalcgray };
}
public void onClick(View v) {
Intent launchsettings = new Intent(CalligraphyFontsActivity.this,
Settings.class);
switch (v.getId()) {
case R.id.backhomebutton:
finish();
break;
case R.id.settingspic:
startActivity(launchsettings);
break;
}
}
public class MyPagerAdapter extends PagerAdapter {
public int getCount() {
return 2;
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
switch (position) {
case 0:
resId = R.layout.italiclc;
break;
case 1:
resId = R.layout.italicuc;
break;
}
View view = inflater.inflate(resId, null);
if (resId == R.layout.italiclc) {
TextView italiclowercase = (TextView) view
.findViewById(R.id.italiclowercase);
italiclowercase.setTypeface(calligraphyfont);
}
if (resId == R.layout.italicuc) {
TextView italicuppercase = (TextView) view
.findViewById(R.id.italicuppercase);
italicuppercase.setTypeface(calligraphyfont);
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
}
前に言ったように、私はそれを無駄に機能させるために多くの異なる方法を試しました。例外は、イメージアダプタをグリッドビューに設定する行(29行目)から発生します。提供できるどんな助けでも大いに感謝されるでしょう。