XML для макета сетки.
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myGrid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="2dip"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:columnWidth="148dp"
android:stretchMode="spacingWidthUniform"
android:gravity="center"
/>
</RelativeLayout>
imagenselect.xml для изображения и флажка.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/GridItem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal"
android:background="#000080">
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
<CheckBox
android:id="@+id/check1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Android" />
</LinearLayout>
Класс для добавления изображений в сетку и отображения,
private class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context localcontext){
context = localcontext;
}
public int getCount() {
return cursor.getCount();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub\
View MyView = convertView;
ImageView picturesView;
picturesView = new ImageView(context);
if (convertView == null) {
LayoutInflater li = getLayoutInflater();
MyView = li.inflate(R.layout.imagenselect, null);
// Move cursor to current position
cursor.moveToPosition(position);
// Get the current value for the requested column
int imageID = cursor.getInt(columnIndex);
// Set the content of the image based on the provided URI
picturesView.setImageURI(Uri.withAppendedPath(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID));
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView.setLayoutParams(new GridView.LayoutParams(100, 100));
}
else {
picturesView = (ImageView) convertView;
}
return picturesView;
}
}
}
Вот с этим кодом,Я получаю только изображения в gridview.Но я хочу раздуть вид и использовать его так, чтобы я мог добавить флажок вместе с изображением.(для каждого изображения установлен флажок).
Поскольку в функциях «myView» и «picturesView» есть два вида.Если я попытаюсь типизировать picturesView к myView, то получаю сбой.Заранее спасибо!
при изменении, как вы и предлагали, я получаю сбой.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub\
View myView = convertView;
if (convertView == null) {
LayoutInflater li = getLayoutInflater();
myView = li.inflate(R.layout.imagenselect, null);
}
ImageView picturesView;
picturesView = new ImageView(context);
picturesView = (ImageView) myView.findViewById( R.id.grid_item_image);
// Move cursor to current position
cursor.moveToPosition(position);
// Get the current value for the requested column
int imageID = cursor.getInt(columnIndex);
// Set the content of the image based on the provided URI
picturesView.setImageURI(Uri.withAppendedPath(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + imageID));
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView.setLayoutParams(new GridView.LayoutParams(100, 100));
return myView;
}