アクティビティでGridView
に表示したいフォルダがたくさんあるディレクトリがあります。AndroidのGridViewでファイルフォルダを表示する方法は?
フォルダとタイトルのパスを抽出しましたが、実装方法についてはGridView
に空白を示しています。 私のコードはGridView
の実装用です。
String[] albumNameOnly=thisIntent.getStringArrayExtra("AlbumString");
gridView = (GridView) findViewById(R.id.grid_view);
columnWidth = getScreenWidth();
InitilizeGridLayout(columnWidth);
//The initialize grid is shown below.
MyAlbumAdapter myAlbumAdapter;
Log.e("Starting the Adapter","+++");
myAlbumAdapter = new MyAlbumAdapter(getApplicationContext(), columnWidth,albumNameOnly);
gridView.setAdapter(myAlbumAdapter);
}
public int getScreenWidth() {
int columnWidth;
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
final Point point = new Point();
try {
display.getSize(point);
} catch (NoSuchMethodError ignore) { // Older device
point.x = display.getWidth();
point.y = display.getHeight();
}
columnWidth = point.x;
return columnWidth;
}
private void InitilizeGridLayout(int screenWidth) {
Resources r = getResources();
float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
GRID_PADDING, r.getDisplayMetrics());
columnWidth = (int) ((screenWidth - ((NUM_OF_COLUMNS + 1) * padding))/NUM_OF_COLUMNS);
gridView.setNumColumns(NUM_OF_COLUMNS);
gridView.setColumnWidth(columnWidth);
gridView.setStretchMode(GridView.NO_STRETCH);
gridView.setPadding((int) padding, (int) padding, (int) padding,
(int) padding);
gridView.setHorizontalSpacing((int) padding);
gridView.setVerticalSpacing((int) padding);
}
そして、AlbumAdapter
は以下のとおりです。 今私はそれらをGridView
に入れておきます。それで、setResource
のドロウアブルにImageView
を設定しています。
public MyAlbumAdapter(Context context, int columnWidth, String[] albumNameOnly) {
this.context = context;
Log.e("My Adapter Called", "++++");
this.columnWidth = columnWidth;
this.albumNameOnly = albumNameOnly;
}
@Override
public int getCount() {
Log.e("Size of Directory", "++ " + albumNameOnly.length);
return MainActivity.directoryPath.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View myGrid;
final ImageView imageView;
final TextView textView;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
myGrid = new View(context);
myGrid = inflater.inflate(R.layout.album_grid_activity_layout, null);
imageView = (ImageView) myGrid.findViewById(R.id.no_image_placeholder);
textView = (TextView) myGrid.findViewById(R.id.album_title_main);
// myImageView.setLayoutParams(new GridView.LayoutParams(200, 200));
// myImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
// myImageView.setPadding(1, 1, 1, 1);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(columnWidth, columnWidth));
imageView.setImageResource(R.drawable.no_image);
Log.e("++++", "AlbuM Name to be displayed" + albumNameOnly[position]);
textView.setText(albumNameOnly[position]);
} else {
myGrid = (View) convertView.getTag();
}
return myGrid;
}
ここは私のGridView
レイアウトです。
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fffff">
</GridView>
また、イメージとタイトルを設定するレイアウトです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/no_image_placeholder"/>
<TextView
android:layout_width="match_parent"
android:id="@+id/album_title_main"
android:layout_height="wrap_content"
android:padding="12dip"
android:background="@android:color/tertiary_text_light"
android:textColor="@android:color/background_dark"
android:gravity="center"
android:layout_alignRight="@+id/no_image_placeholder"
android:layout_alignBottom="@+id/no_image_placeholder"
/>
</RelativeLayout>
この問題で私を助けてください。 私は助けに非常に感謝します。
String [] albumNameOnlyの長さが0以上でないことを確認しましたか? – HendraWD
はい、今のところ3つの文字列があります。 –
@Anand Vardhan:レイアウトxmlにgridViewを配置しても、プログラムでgridviewプロパティを設定する特別な理由は何ですか? GridViewの背景色を設定して、実際にレイアウトに配置されているかどうか確認できますか?はいの場合、そのフレームは何ですか? –