Ich habe ein Verzeichnis, unter dem ich viele Ordner habe, die ich in einer Aktivität auf GridView
zeigen möchte.Wie zeigen Sie die Dateiordner in GridView in Android an?
Ich habe den Pfad für die Ordner und den Titel extrahiert, aber Zeichnungsrohlinge auf Wie implementiert man es in GridView
. Mein Code ist hier für GridView
Implementierung.
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);
}
Und meine AlbumAdapter
ist unten. Gerade jetzt möchte ich sie nur in GridView
, deshalb setze ich es auf eine Zeichen in setResource
für 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;
}
Hier ist mein GridView
Layout.
<?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>
Und das Layout, auf dem ich das Bild und den Titel dafür festlegen.
<?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>
Bitte helfen Sie mir in dieser Ausgabe. Ich werde sehr dankbar für die Hilfe sein.
Haben Sie überprüft, dass String [] albumNameOnly Länge ist> 0 oder nicht null? – HendraWD
Ja, für jetzt hat es 3 Saiten drin. –
@Anand Vardhan: Irgendein besonderer Grund, warum Sie Gridview-Eigenschaften programmgesteuert festlegen, obwohl Sie GridView in Layout-XML platziert haben? Kannst du eine Hintergrundfarbe für GridView festlegen und bestätigen, ob sie tatsächlich auf deinem Layout platziert ist oder nicht? Wenn ja, was ist sein Rahmen? –