GridView を水平スクロール バー内に表示するには、あなたの助けが必要です。スクロール中に一度に 1 つの GridView を表示したい。GridView の各セルには画像が表示されます。getCount() や getView(int position, View convertView, ViewGroup parent) などの Adapter クラスの関連するメソッドにブレークポイントを配置すると、それらが呼び出されていることがわかります。ただし、 getItem(int position) は呼び出されていません-呼び出す必要があるかどうかはわかりません。これが私のコードです:
GalleryAdapter.java(GridView用アダプター)
public class GalleryAdapter extends BaseAdapter {
private MPSample mpSample;
private File[] listOfFiles;
public GalleryAdapter(MPSample mpSample) {
this.mpSample = mpSample;
File galleryDir = new File(mpSample.mPath);
if (galleryDir != null && galleryDir.exists()) {
listOfFiles = galleryDir.listFiles();
}
}
@Override
public int getCount() {
int count = 0;
if (listOfFiles != null) {
count = listOfFiles.length;
}
return count;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mpSample);
if (convertView == null) {
File defaultPicture = Utils.getDefaultPictureFromCurrentDir(listOfFiles[position]);
Drawable drawable = Drawable.createFromPath(defaultPicture.getPath());
imageView.setImageDrawable(drawable);
imageView.setAdjustViewBounds(true);
imageView.setScaleType(ScaleType.FIT_XY);
} else {
imageView = (ImageView) convertView;
}
return imageView;
}
}
GalleryFragment.java (GridView を作成し、それにアダプターを割り当てるクラス。また、GridView を水平スクロール ビュー内に配置します):
public class GalleryFragment extends Fragment {
private MPSample mpSample;
public GalleryFragment(MPSample mpSample) {
this.mpSample = mpSample;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.gallery, container, false);
HorizontalScrollView horizontalScrollView = (HorizontalScrollView)view.findViewById(R.id.h_scroll_view_gallery);
GridView gridView = new GridView(mpSample);
gridView.setNumColumns(3);
gridView.setAdapter(new GalleryAdapter(mpSample));
gridView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 0.0f));
gridView.setPadding(150, 50, 50, 250);
gridView.setVisibility(View.VISIBLE);
horizontalScrollView.addView(gridView);
return view;
}
}
注: MPSample は FragmentActivity を拡張し、コンテキストとして渡されます
私のXML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent_color"
>
<HorizontalScrollView
android:id="@+id/h_scroll_view_gallery"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
</HorizontalScrollView>
</RelativeLayout>
私のGridViewが表示されない理由を誰かが理解するのを手伝ってくれますか? あなたからの助けに感謝します。