如何解决[Android]在网格视图的图像中添加复选框
| 网格布局的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>
用于在gridview中添加图像并显示的类,
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);
picturesView.setLayoutParams(new GridView.LayoutParams(100,100));
}
else {
picturesView = (ImageView) convertView;
}
return picturesView;
}
}
}
在这里,使用此代码,我只能在gridview中获得图像。但我想使视图膨胀并使用它,以便能够与图像一起添加复选框。 (对于每个图像,请选择一个复选框)。
由于函数\“ myView \”和\“ picturesView \”中有两个视图。如果我尝试将picturesView转换为myView,那么我将崩溃。提前致谢 !
关于更改,因为您建议我崩溃。
@Override
public View getView(int position,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);
picturesView.setLayoutParams(new GridView.LayoutParams(100,100));
return myView;
}
解决方法
您的代码对我来说真的很困惑。您的代码始终返回
ImageView
对象,而永远不会返回您从包含复选框的布局中放大的MyView
视图。那可以解释为什么您的复选框没有出现。
我认为您需要以下方面的帮助:
@Override
public View getView(int position,View convertView,ViewGroup parent) {
View myView = convertView
if( myView == null )
{
LayoutInflater li = getLayoutInflater();
myView = li.inflate(R.layout.imagenselect,null);
}
ImageView pictureView = (ImageView) myView.findViewById( R.id.grid_item_image );
// initialise pictureView here.
return myView;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。