有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    您似乎将图像路径存储在ArrayList列表中。如果是,则为GridView设置一个onItemClickListeber。在onItemClick方法中,您可以获得单击的gridview的位置。试试“列表”。get(position)in theonItemClick`获取路径