Android:GridView返回图像路径

Android:GridView返回图像路径,android,gridview,image-gallery,absolute-path,Android,Gridview,Image Gallery,Absolute Path,我想从GridView中单击的图像中提取绝对路径 这是我的密码: public class CustomGallery extends Activity { private int count; private Bitmap[] thumbnails; private boolean[] thumbnailsselection; private String[] arrPath; private ImageAdapter imageAdapter; ArrayList<String>

我想从GridView中单击的图像中提取绝对路径

这是我的密码:

public class CustomGallery extends Activity {
private int count;
private Bitmap[] thumbnails;
private boolean[] thumbnailsselection;
private String[] arrPath;
private ImageAdapter imageAdapter;
ArrayList<String> f = new ArrayList<String>();// list of file paths
File[] listFile;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gallery);
    getFromSdcard();
    GridView imagegrid = (GridView) findViewById(R.id.PhoneImageGrid);
    imageAdapter = new ImageAdapter();
    imagegrid.setAdapter(imageAdapter);
    imagegrid.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                int position, long id) {
            Toast.makeText(getApplicationContext(),
                    "Private Folder Created", Toast.LENGTH_LONG).show();
        }
    });
}

public void getFromSdcard() {
    File file = new File("/storage/sdcard/DCIM");

    if (file.isDirectory()) {
        listFile = file.listFiles();

        for (int i = 0; i < listFile.length; i++) {

            f.add(listFile[i].getAbsolutePath());
        }
    }
}

public class ImageAdapter extends BaseAdapter {
    private LayoutInflater mInflater;

    public ImageAdapter() {
        mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public int getCount() {
        return f.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.galleryitem, null);
            holder.imageview = (ImageView) convertView
                    .findViewById(R.id.thumbImage);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position));
        holder.imageview.setImageBitmap(myBitmap);
        return convertView;
    }

}

class ViewHolder {
    ImageView imageview;

}
}
公共类CustomGallery扩展活动{
私人整数计数;
私人位图[]缩略图;
私有布尔[]缩略图选择;
私有字符串[]路径;
专用图像适配器;
ArrayList f=new ArrayList();//文件路径列表
文件[]列表文件;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery);
getFromSdcard();
GridView imagegrid=(GridView)findViewById(R.id.PhoneImageGrid);
imageAdapter=新的imageAdapter();
setAdapter(imageAdapter);
setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
Toast.makeText(getApplicationContext(),
“已创建私人文件夹”,Toast.LENGTH_LONG.show();
}
});
}
public void getFromSdcard(){
File File=新文件(“/storage/sdcard/DCIM”);
if(file.isDirectory()){
listFile=file.listFiles();
for(int i=0;i
我知道我必须用McClickListener编写代码,但我不知道如何为它生成逻辑

请给我从单击的项目中提取绝对路径的代码。谢谢

您可以添加

holder.imageview.setonClickListener 
并在其中通过
f.getAbsolutePath()检查文件f的路径

检查这个-


您必须在getView方法中添加此项,请检查此示例

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = mInflater.inflate(R.layout.galleryitem, null);
            holder.imageview = (ImageView) convertView
                    .findViewById(R.id.thumbImage);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position));
        holder.imageview.setImageBitmap(myBitmap);


         holder.imageview.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    System.out.println("Absolute Path :"+f.getAbsolutePath(););
                }
            });
        return convertView;
    }

检查一下这个,这可能对你有帮助

imagegrid.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                Toast.makeText(getApplicationContext(),
                        f.get(position), Toast.LENGTH_LONG).show();
            }
        });
imagegrid.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
Toast.makeText(getApplicationContext(),
f、 get(position),Toast.LENGTH_LONG.show();
}
});

先生,您能告诉我应该在哪里添加这些代码行吗?您必须在getView方法中添加此代码,我已经添加了一些示例代码。希望这有帮助。先生,f.getAbsolutePath()在这段代码中不起作用。在f之后按g。我只有两个选项,即get和getclassf是文件对象,请检查并根据您的代码进行修改。先生,我无法执行此操作。你能帮我做吗。我尝试了很多,但仍然坚持在它的作品,你能接受它,并提高它吗?我试图提高它,但我的声誉不到15。upvote不起作用。不管怎样,我向你求助。哦,是的,实际上我不知道这个功能。我看到它了:)