0

I have been trying to learn about lists and other things in android.. i have an app which shows the list of items from sd card..i want the code for which i can add the sort option to it..which will sort the list by name,date,type ans size. please help me out.. il display my code here..which shows the contents in list view.

package com.android.sam;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener ;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ListActivity;

import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class SamActivity  extends ListActivity {

private List<String> item = null;

private List<String> path = null;

private String root="/";

private TextView myPath;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
    myPath = (TextView)findViewById(R.id.path);
getDir(root);
}
private void getDir(String dirPath)

{

 myPath.setText("Location: " + dirPath);



 item = new ArrayList<String>();

 path = new ArrayList<String>();



 File f = new File(dirPath);

 File[] files = f.listFiles();



 if(!dirPath.equals(root))

 {



  item.add(root);

  path.add(root);



  item.add("../");

  path.add(f.getParent());



  }



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

  {

   File file = files[i];

   path.add(file.getPath());

   if(file.isDirectory())

    item.add(file.getName() + "/");

   else

    item.add(file.getName());

  }



  ArrayAdapter<String> fileList =

   new ArrayAdapter<String>(this, R.layout.row, item);

   setListAdapter(fileList);

  }
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
File file = new File(path.get(position));
if (file.isDirectory())

 {

 if(file.canRead())

 getDir(path.get(position));

 else

{

 new AlertDialog.Builder(this)

.setIcon(R.drawable.ic_launcher)

.setTitle("[" + file.getName() + "] folder can't be read!")

.setPositiveButton("OK", 

  new DialogInterface.OnClickListener() {

 public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

  }

  }

 else

{

  new AlertDialog.Builder(this)

.setIcon(R.drawable.alert)

.setTitle("[" + file.getName() + "] ")

.setPositiveButton("OK", 

  new DialogInterface.OnClickListener() {

  public void onClick(DialogInterface dialog, int which) {

    // TODO Auto-generated method stub

   }

  }).show();

  }

   }

  }

in my layout i have added an image button which should be showing the sort options and sort the list thankx in advance this is what i hav added ` sorting= (Button) findViewById(R.id.button2); final Context context1=this; sorting.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

          if (v == findViewById(R.id.button2)) {

                 final CharSequence[] items = {"name", "date", "size", "type", "none"};

                 AlertDialog.Builder builder = new AlertDialog.Builder(context1);

                 builder.setTitle("Sort by");

                 builder.setSingleChoiceItems(items, -1, new                                    DialogInterface.OnClickListener       ()       {
                     // Click listener
                     public void onClick(DialogInterface dialog, int item) {
                         Toast.makeText(getApplicationContext(), items[item],            Toast.LENGTH_SHORT).show();
                         //If the Cheese item is chosen close the dialog box
                         if(items[item]=="none")
                             dialog.dismiss();
                     }
                 });
                 AlertDialog alert = builder.create();
                 //display dialog box
                 alert.show();
             }
      }
      });  
sheekha
  • 1
  • 5

1 Answers1

0

1- is you want to sort a ArrayList of String object only as of ArrayList can use Collections.sort(item );

2- if you have ArrayList of your object type the need to create the Comparator for that.

http://www.developer.com/java/other/article.php/858411/Data-Structures-in-Java-Part-9-The-Comparator-Interface-Part-1.htm

java-sorting-comparator-vs-comparable

lkamal
  • 3,788
  • 1
  • 20
  • 34
Dheeresh Singh
  • 15,643
  • 3
  • 38
  • 36
  • as it looks you need to sort on the bassi of the different-different attributes name", "date", "size", "type", "none" so you need to make the Comparator for each attributes and sort the list on selection of item in the dialog list. – Dheeresh Singh Jun 08 '12 at 06:51
  • i have added the comparators for diff attributs bt the code doesnt work :( maybe im missing out something..could u tell me wr exactly i have to put in this code? tthnakx in advance – sheekha Jun 08 '12 at 09:05
  • yes I need to see the code......... either update here or post in new query ........ – Dheeresh Singh Jun 08 '12 at 09:07