How can i add sdcard images to coverflow?

允我心安 提交于 2019-12-02 12:13:02
private String[] mFileStrings;
 ArrayList<String> f = new ArrayList<String>();

public void getFromSdcard()
{
    File file=  new File(android.os.Environment.getExternalStorageDirectory(),"Your Sdcard");

        if (file.isDirectory())
        {
            listFile = file.listFiles();//get list of files
            for (int i = listFile.length-5; i < listFile.length; i++)
            {
                    //get the length decrease it 5 . loop to last 
                mFileStrings[i] = listFile[i].getAbsolutePath();
                f.add(listFile[i].getAbsolutePath());//add path of files to array list
                System.out.println("...................................."+mFileStrings[i]);
            }
        }
}

You can get the path of files under a folder in your sdcard. But make sure the sdcard folder does not have other file formats. Then pass the arraylist to your adapter to display the same in coverflow

To filter files that are .png you can use the below

 File dir= new File(android.os.Environment.getExternalStorageDirectory());

Then call

walkdir(dir);

ArrayList<String> filepath= new ArrayList<String>();//contains list of all files ending with 

public void walkdir(File dir) {
String Patternpng = ".png";

File listFile[] = dir.listFiles();

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

if (listFile[i].isDirectory()) {
    walkdir(listFile[i]);
} else {
  if (listFile[i].getName().endsWith(Patternpng)){
      //Do what ever u want
      filepath.add( listFile[i].getAbsolutePath());
    }
   }
  }  
 }    
 }

From the comment made i assume you need to display last 5 items from your sdcard folder

         int  size= f.size()-5; 
         //get the size of arraylist then decrease it by 5
         //then loop from that point to your arraylist size 
         //to get the last 5 items in the list
         for(int j=size;j<f.size();j++)
         {
             System.out.println("Position = "+j);
             System.out.println("Path of files"+f.get(j));  
         }

Your adapter

 public class MyAdapter extends AbstractCoverFlowImageAdapter {


@Override
public int getCount() {
    // TODO Auto-generated method stub
    return f.size();
}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return position;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

   public View getView(int position, View convertView, ViewGroup parent) {
      //inflate layout
          //do something
          //use the edit 2 to get last 5 items in the arraylist.
          ImageView image=(ImageView)vi.findViewById(R.id.ivv);
          Bitmap b = BitmapFactory.decodeFile(f.get(position));
          image.setImageBitmap(b);     
    }

  }

UPDATE:

  1. Add only last 5 file paths to your arraylist f in getFromSdcard()

  2. Your listview item count is f.size()

  3. To get the paths you can use f.get(position) in getview().

In getFromSdcard()

        for (int i = listFile.length-5; i < listFile.length; i++)
         // add only last 5 file paths from your folder

In your adapter

@Override
 public int getCount() {
// TODO Auto-generated method stub
return f.size();
}

In getView

        ImageView image=(ImageView)vi.findViewById(R.id.ivv);
        Bitmap b = BitmapFactory.decodeFile(f.get(position));
        image.setImageBitmap(b);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!