Question

I want to implement a file browser in my app. I saw code for a file browser. But in all those examples the dir /files are listed as a lisrview. I am want to give a gridview display in my app. The folders / files will be listed in a grid. On clickikng a folder , it will open the next level grid.

I didnt see any implementation supporting this. If you have any reference please share

thanks for the time and support

Was it helpful?

Solution

Adding my code here for anyones future reference

public class FileBrowserActivity extends Activity {
GridView gridView;



public static List<FileBrowserItem> gridItemsList;
public static String name;
String root;
String TAG= "FileBrowser";
public static boolean multiSelectFlag = false;
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.gridview);
     root = getIntent().getExtras().getString("rootpath");

    Log.i(TAG,"path:"+ root);

    getGridItemsList();
    gridView = (GridView) findViewById(R.id.gridView1);

    gridView.setAdapter(new FileBrowserGridViewAdapter(this));

}

private void getGridItemsList() {
    gridItemsList = new ArrayList<FileBrowserItem>();
     File file;
    file = new File(root);
    File list[] = file.listFiles();
    if(list.length == 0){
        Toast.makeText(getApplicationContext(), "Empty Folde", Toast.LENGTH_SHORT).show();
    }
    for (int i = 0; i < list.length; i++) {
        FileBrowserItem item = new FileBrowserItem();
        File temp_file = new File(file.getAbsolutePath(),list[i].getName());
        item.setPath( file.getAbsolutePath()+"/"+list[i].getName());
        item.setName(list[i].getName());
        //Log.i(TAG,i + item.value + item.name);
        if ( temp_file.listFiles() != null) {
            item.setType(FileBrowserItem.DIRECTORY_TYPE)  ;
        } else {
            item.setType(FileBrowserItem.FILE_TYPE)  ;
        } 
        gridItemsList.add(item);
    }

}
@Override
 public boolean onKeyDown(int keyCode, KeyEvent event) {
     if ((keyCode == KeyEvent.KEYCODE_BACK)) {
         root = new File(root).getParent();
         Log.i(TAG,"back"+root);
         getGridItemsList();
         finish();
         return true;
     } else {
         return super.onKeyDown(keyCode, event);
     }
 }

}

public View getView(final int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    if (convertView == null) {
        LayoutInflater mInflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = mInflater.inflate(R.layout.grid_item, null);
        holder = new ViewHolder();
        holder.text1 = (TextView) convertView
                .findViewById(R.id.grid_item_label);
        holder.image = (ImageView) convertView
                .findViewById(R.id.grid_item_image);
        holder.checkBox= (CheckBox) convertView
                .findViewById(R.id.checkBox);

        holder.image.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                Log.d("onClick", "position [" + position + "]");

                if (FileBrowserActivity.gridItemsList.get(position)
                        .getType() == FileBrowserItem.DIRECTORY_TYPE) {
                    Intent intent = new Intent(mContext,
                            FileBrowserActivity.class);
                    intent.putExtra("rootpath",
                            FileBrowserActivity.gridItemsList.get(position)
                                    .getPath());
                    mContext.startActivity(intent);
                }
            }
        });
        convertView.setTag(holder);
    } else {

        holder = (ViewHolder) convertView.getTag();

    }
    Log.i(TAG, "Position" + position);
    Log.i(TAG, FileBrowserActivity.gridItemsList.get(position).getName());
    holder.text1.setText(FileBrowserActivity.gridItemsList.get(position)
            .getName());
    holder.image
            .setImageResource(getImageIcon(FileBrowserActivity.gridItemsList
                    .get(position).getType()));
    if(FileBrowserActivity.multiSelectFlag){
        holder.checkBox.setVisibility(View.VISIBLE);
    }
    else{
        holder.checkBox.setVisibility(View.GONE);
    }
    return convertView;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top