J'ai un fichier contenant du texte sur une ligne distincte.
Je veux d'abord afficher la ligne, puis si j'appuie sur un bouton, la deuxième ligne devrait s'afficher dans le TextView
et la première ligne devrait disparaître. Ensuite, si j'appuie à nouveau, la troisième ligne devrait s'afficher et ainsi de suite.
Dois-je utiliser TextSwitcher
ou autre chose? Comment puis je faire ça?
Vous l'avez marqué comme "Android-assets", je vais donc supposer que votre fichier se trouve dans le dossier des actifs. Ici:
InputStream in;
BufferedReader reader;
String line;
TextView text;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView) findViewById(R.id.textView1);
in = this.getAssets().open(<your file>);
reader = new BufferedReader(new InputStreamReader(in));
line = reader.readLine();
text.setText(line);
Button next = (Button) findViewById(R.id.button1);
next.setOnClickListener(this);
}
public void onClick(View v){
line = reader.readLine();
if (line != null){
text.setText(line);
} else {
//you may want to close the file now since there's nothing more to be done here.
}
}
Essayez ceci. Je n'ai pas pu vérifier que cela fonctionne complètement, mais je pense que c'est l'idée générale que vous souhaitez suivre. Naturellement, vous voudrez remplacer tout R.id.textView1/button1
avec les noms que vous avez spécifiés dans votre fichier de mise en page.
Aussi: Il y a très peu d'erreur de vérification ici pour des raisons d'espace. Vous voudrez vérifier que votre actif existe et je suis quasiment sûr qu'il devrait y avoir un try/catch
bloquer lorsque vous ouvrez le fichier en lecture.
Edit: grosse erreur, ce n'est pas R.layout
, c'est R.id
J'ai modifié ma réponse pour résoudre le problème.
Le code suivant devrait répondre à votre besoin
try {
// open the file for reading
InputStream instream = new FileInputStream("myfilename.txt");
// if file the available for reading
if (instream != null) {
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
// read every line of the file into the line-variable, on line at the time
do {
line = buffreader.readLine();
// do something with the line
} while (line != null);
}
} catch (Exception ex) {
// print stack trace.
} finally {
// close the file.
instream.close();
}
Vous pouvez simplement utiliser un TextView et un ButtonView. Lisez le fichier à l'aide d'un BufferedReader, il vous fournira une belle API pour lire les lignes une par une. En cliquant sur le bouton, changez simplement le texte de la vue de texte en utilisant settext.
Vous pouvez également envisager de lire tout le contenu du fichier et de le mettre dans une liste de chaînes, cela peut être plus propre si votre fichier n'est pas trop volumineux.
Cordialement, Stéphane