2013-08-18 4 views
0

J'ai une liste de fichiers dans un répertoire. Dans l'activité ci-dessous, l'application charge les fichiers dans une liste. Maintenant, j'ai besoin de chaque élément de la liste pour ouvrir son fichier correspondant dans le répertoire et lire le fichier dans une autre activité (probablement via une intention). Même le test Toast ne s'affiche pas. Comment puis-je m'y prendre? Cette liste change de façon dynamique car elle ne cesse de croître chaque fois qu'un nouveau fichier est ajouté dans le répertoire. Donc, je ne peux pas utiliser facilement un bloc d'interrupteur.Ouvrir une nouvelle activité pour lire un élément sur listitemclick

public class ReadFilesFromPath extends Activity { 
/** Called when the activity is first created. */ 
List<String> myList; 
File file; 
ListView listview; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.recordinglist); 
listview = (ListView) findViewById(R.id.recordlist); 
myList = new ArrayList<String>(); 

File directory = Environment.getExternalStorageDirectory(); 
file = new File(directory + "/" + "Recordify"); 
File list[] = file.listFiles(); 

for(int i=0; i< list.length; i++) 
{ 
     myList.add(list[i].getName()); 
} 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, android.R.id.text1, myList); 
listview.setAdapter(adapter); //Set all the file in the list. 
} 
public void onitemclick() { 
    listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> a, View v, int i, 
       long l) { 
      // TODO Auto-generated method stub 
      Toast.makeText(getApplicationContext(), "Test", Toast.LENGTH_SHORT).show(); 
     } 

    }); 
} 
} 

Répondre

0

Je pense que votre problème est que vous configurez la onCLickListener() dans une méthode qui est pas appelée. Vous devez définir l'écouteur après que le ListView a été initialisé et appeler la méthode pour effectuer vos tâches (ou le faire avec la méthode de remplacement onItemClick).

Donc, dans votre onCreate vous pourriez changer à ceci:

listview = (ListView) findViewById(R.id.recordlist); 
listview.setOnItemClickListener(...); 
+0

Ok, donc je l'ai fait, mais maintenant que le problème persiste. Je ne sais pas comment faire en sorte que chaque élément de la liste joue le fichier qu'il montre. – ThatGuyThere

+0

Donc, à ce stade, le toast d'essai devrait montrer à droite? Passez simplement la position de l'élément de liste touché, à une méthode ou quelque chose. Et puis dans la méthode faire quelque chose pour afficher le contenu en fonction de la position adoptée. (Du code que vous avez fourni, la position est le 'int i') – bidluo

+0

D'accord merci, je vais essayer – ThatGuyThere

Questions connexes