zoukankan      html  css  js  c++  java
  • 遍历指定目录下的图片文件 显示在gridview 并添加点击事件

    先上图:

     

    gridview布局

    <?xml version="1.0" encoding="utf-8"?>   
    <GridView xmlns:android="http://schemas.android.com/apk/res/android"     
        android:id="@+id/gridview"   
        android:layout_width="fill_parent"     
        android:layout_height="fill_parent"   
        android:columnWidth="90dp"   
        android:numColumns="auto_fit"   
        android:verticalSpacing="10dp"   
        android:horizontalSpacing="10dp"   
        android:stretchMode="columnWidth"   
        android:gravity="center"   
        />   
    

      item配件布局

    <?xml version="1.0" encoding="utf-8"?>   
    <LinearLayout   
        xmlns:android="http://schemas.android.com/apk/res/android"   
        android:id="@+id/root"   
        android:orientation="vertical"     
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content"     
        android:layout_marginTop="5dp"   
        >   
        <ImageView     
            android:id="@+id/image"   
            android:layout_width="100dp"   
            android:layout_height="150dp"     
            android:layout_gravity="center"   
            android:scaleType="fitXY"   
            android:padding="4dp"   
           />   
        <TextView     
            android:id="@+id/title"   
            android:layout_width="wrap_content"   
            android:layout_height="wrap_content"     
            android:layout_gravity="center"   
            android:gravity="center_horizontal"   
            />   
    </LinearLayout>   
    

      主Activity

    package com.su.testgrid3;  
    import android.app.Activity;  
    import android.os.Bundle;  
    import android.os.Environment;  
    import android.view.View;  
    import android.widget.AdapterView;  
    import android.widget.AdapterView.OnItemLongClickListener;  
    import android.widget.GridView;  
    import android.widget.Toast;  
    import android.widget.AdapterView.OnItemClickListener;  
      
    public class TestGrid3Activity extends Activity {  
        private GridView gridView;  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
             
            String[] titles = FileUtil.getImageNames("/mnt/sdcard/k/");  
            String[] imagePaths = new String[titles.length];  
            for (int i = 0; i < titles.length; i++) {  
                imagePaths="/mnt/sdcard/k/"+titles;  
            }  
             
            gridView = (GridView) findViewById(R.id.gridview);  
            PictureAdapter adapter = new PictureAdapter(titles, imagePaths, this);  
            gridView.setAdapter(adapter);  
      
            gridView.setOnItemClickListener(new OnItemClickListener() {  
                public void onItemClick(AdapterView<?> parent, View v,  
                        int position, long id) {  
                    Toast.makeText(TestGrid3Activity.this, "你点击了" + (position + 1),  
                            Toast.LENGTH_SHORT).show();  
                }  
            });  
             
            gridView.setOnItemLongClickListener(new OnItemLongClickListener(){  
                public boolean onItemLongClick(AdapterView<?> parent, View v,  
                        int position, long id) {  
                    Toast.makeText(TestGrid3Activity.this, "你长按了" + (position + 1),  
                            Toast.LENGTH_SHORT).show();  
                    return true;  
                    /*
                     * 这里需要true
                     * 因为:OnItemLongClick事件中:down事件返回值标记此次事
                     * 件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),
                     * 而up事件标记此次事件结束时间,也就是判断是否为长按。
                     */  
                      
                }  
                  
            });  
        }  
    }  
    

      适配器

    // 
    
    package com.su.testgrid3; 
    
    import java.util.ArrayList; 
    import java.util.List; 
    
    import android.content.Context; 
    import android.graphics.BitmapFactory; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.BaseAdapter; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    
    //自定义适配器 
    class PictureAdapter extends BaseAdapter { 
    private LayoutInflater inflater; 
    private List<Picture> pictures; 
    
    public PictureAdapter(String[] titles, String[] images, Context context) { 
    super(); 
    pictures = new ArrayList<Picture>(); 
    inflater = LayoutInflater.from(context); 
    for (int i = 0; i < images.length; i++) { 
    Picture picture = new Picture(titles, images); 
    pictures.add(picture); 
    } 
    } 
    
    @Override 
    public int getCount() { 
    if (null != pictures) { 
    return pictures.size(); 
    } else { 
    return 0; 
    } 
    } 
    
    @Override 
    public Object getItem(int position) { 
    return pictures.get(position); 
    } 
    
    @Override 
    public long getItemId(int position) { 
    return position; 
    } 
    
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder; 
    if (convertView == null) { 
    convertView = inflater.inflate(R.layout.picture_item, null); 
    viewHolder = new ViewHolder(); 
    viewHolder.title = (TextView) convertView.findViewById(R.id.title); 
    viewHolder.image = (ImageView) convertView.findViewById(R.id.image); 
    convertView.setTag(viewHolder); 
    } else { 
    viewHolder = (ViewHolder) convertView.getTag(); 
    } 
    viewHolder.title.setText(pictures.get(position).getTitle()); 
    viewHolder.image.setImageBitmap(BitmapFactory.decodeFile(pictures.get( 
    position).getImageId())); 
    return convertView; 
    } 
    
    } 
    
    class ViewHolder { 
    public TextView title; 
    public ImageView image; 
    }
    

      

    picture的javabean

    //  
      
    package com.su.testgrid3;  
      
    class Picture {  
        private String title;  
        private String imageId;  
      
        public Picture() {  
            super();  
        }  
      
        public Picture(String title, String imageId) {  
            super();  
            this.title = title;  
            this.imageId = imageId;  
        }  
      
        public String getTitle() {  
            return title;  
        }  
      
        public void setTitle(String title) {  
            this.title = title;  
        }  
      
        public String getImageId() {  
            return imageId;  
        }  
      
        public void setImageId(String imageId) {  
            this.imageId = imageId;  
        }  
    }  
    

      

    获取图片文件的名字数组的操作类

       
    package com.su.testgrid3;  
      
    import java.io.File;  
      
    public class FileUtil {  
        public static String[] getImageNames(String folderPath) {  
            File file01 = new File(folderPath);  
      
            String[] files01 = file01.list();  
      
            int imageFileNums = 0;  
            for (int i = 0; i < files01.length; i++) {  
                File file02 = new File(folderPath + "/" + files01);  
      
                if (!file02.isDirectory()) {  
      
                    if (isImageFile(file02.getName())) {  
      
                        imageFileNums++;  
                    }  
                }  
            }  
      
            String[] files02 = new String[imageFileNums];  
      
            int j = 0;  
            for (int i = 0; i < files01.length; i++) {  
                File file02 = new File(folderPath + "/" + files01);  
      
                if (!file02.isDirectory()) {  
      
                    if (isImageFile(file02.getName())) {  
                        files02[j] = file02.getName();  
                        j++;  
                    }  
                }  
            }  
            return files02;  
        }  
      
        private static boolean isImageFile(String fileName) {  
            String fileEnd = fileName.substring(fileName.lastIndexOf(".") + 1,  
                    fileName.length());  
            if (fileEnd.equalsIgnoreCase("jpg")) {  
                return true;  
            } else if (fileEnd.equalsIgnoreCase("png")) {  
                return true;  
            } else if (fileEnd.equalsIgnoreCase("bmp")) {  
                return true;  
            } else {  
                return false;  
            }  
        }  
      
    }  
    

      附源码:

     https://files.cnblogs.com/feifei1010/%E5%8A%A8%E6%80%81%E7%9A%84%E4%BB%8Esd%E5%8D%A1%E8%AF%BB%E5%8F%96%E7%9A%84TestGrid3.zip

    参考资料:

    http://www.apkbus.com/android-58470-1-1.html

    http://www.cnblogs.com/lamapig/archive/2011/08/18/2145006.html

     

    欢迎热爱安卓开发者加入群一起交流,共同进步。广州群252743081  广州群218251417 南京群 220818530深圳群252742753深圳群之二 260134856

  • 相关阅读:
    <form:select>的使用
    存储过程-删除、新建索引
    java 反射常用总结
    java判断是否是数字
    jquery遍历数组添加行删除行
    oracle常用sql
    cxf (zhuan)
    linux 常用命令--个人小结一
    java发送邮件
    socket和webservice特点
  • 原文地址:https://www.cnblogs.com/feifei1010/p/2660402.html
Copyright © 2011-2022 走看看