java如何从安卓照片库的网格视图中使用复选框获取选中图片的路径
我试图从网格视图中的图库中获取照片的路径。此图库由带有附加复选框的每个缩略图组成。以下是全部代码:
public class GridGallery extends Activity
{
ArrayList<String>list;
AlertDialog.Builder alert;
private Button send;
GridView gridView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.grid_gallery);
DataModel dbModel = new DataModel(this);
list = dbModel.selectAll();
alert = new AlertDialog.Builder(GridGallery.this);
send = (Button)findViewById(R.id.send_message);
gridView = (GridView) findViewById(R.id.sdcard);
gridView.setAdapter(new ImageAdapter(this));
gridView.setClickable(true);
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View view, int pos,
long id)
{
// TODO Auto-generated method stub
final int position = pos;
final String path = list.get(position).toString();
final String option[] = new String[]{"Send to","Watch"};
alert.setTitle("Pick options");
alert.setItems(option, new OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
// TODO Auto-generated method stub
if(option[which].equals("Watch"))
{
if(path.contains(".jpg"))
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(list.get(position))), "image/jpeg");
startActivity(intent);
}
else if(path.contains(".mp4"))
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(list.get(position))), "video/*");
startActivity(intent);
}
else
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(list.get(position))), "audio/*");
startActivity(intent);
}
}//
else
{
Intent sendMail = new Intent(GridGallery.this, SendMessage.class);
sendMail.putExtra("path", path);
startActivity(sendMail);
}
}
}).show();
}
});
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
// TODO Auto-generated method stub
String path = null;
Intent sendToMail = new Intent(GridGallery.this, SendMessage.class);
sendToMail.putExtra("path", path);
startActivity(sendToMail);
}
});
}
/**
* Adapter for our image files.
*/
private class ImageAdapter extends BaseAdapter
{
private final Context context;
Bitmap bitmap;
public ImageAdapter(Context localContext) {
context = localContext;
}
public int getCount()
{
return list.size();
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
ImageView picturesView;
View myView = convertView;
if (convertView == null)
{
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//getLayoutInflater();
myView = layoutInflater.inflate(R.layout.image_selection, null);
picturesView = new ImageView(context);
picturesView = (ImageView)myView.findViewById(R.id.item_grid);
picturesView.setClickable(true);
if(list.get(position).contains(".jpg"))
{
bitmap = BitmapFactory.decodeFile(list.get(position));
}
else if(list.get(position).contains(".mp4"))
{
bitmap = ThumbnailUtils.createVideoThumbnail(list.get(position), 0);
}
else
{
}
picturesView.setImageBitmap(bitmap);
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
return myView;
}
else
{
myView = convertView;
return myView;
}
}
}
}
我的问题是我无法单击图像或视频缩略图。另外,当我选中复选框时,如何才能获得图像
以下是用于图像选择的XML代码:-
<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓" 安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent" 安卓:orientation="vertical" 安卓:gravity="center_horizontal">
<ImageView 安卓:id="@+id/item_grid" 安卓:layout_width="100dip" 安卓:layout_height="100dip"/>
<CheckBox 安卓:id="@+id/check" 安卓:layout_width="wrap_content" 安卓:layout_height="wrap_content" />
和格瑞普画廊。xml:-
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓" 安卓:layout_width="fill_parent" 安卓:layout_height="fill_parent" 安卓:orientation="vertical">
<GridView xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:id="@+id/sdcard"
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
安卓:padding="10dp"
安卓:verticalSpacing="10dp"
安卓:horizontalSpacing="10dp"
安卓:numColumns="auto_fit"
安卓:columnWidth="90dp"
安卓:stretchMode="columnWidth"
安卓:gravity="center"
/>
</RelativeLayout>
请帮帮我。提前谢谢
# 1 楼答案
您似乎将图像路径存储在ArrayList列表中。如果是,则为GridView设置一个onItemClickListeber。在
onItemClick
方法中,您可以获得单击的gridview的位置。试试“列表”。get(position)in the
onItemClick`获取路径