2011-07-26 4 views
3

Voici mon problème: J'ai une base de données et il est plein d'épisodes d'une émission de télévision. Une colonne indique le numéro de l'épisode. Je veux afficher les épisodes dans une liste comme ceci:Retrait saut de ligne de chaîne

  • Episode 1
  • Episode 2
  • Episode 3
  • etc.

J'utilise ma propre classe d'adaptateur extends SimpleCursorAdapter pour ce faire ... Depuis que j'ai eu des erreurs de formatage j'utilise Android.R.layout.simple_list_item_1 et Android.R.id.text1

Fondamentalement, la seule raison pour laquelle j'ai un adaptateur personnalisé est que je peux faire quelque chose comme ceci:

textView.setText("Episode " + cursor.getString("column_for_episode_number"); 

Le problème est, je reçois une liste qui ressemble à ceci:

  • Episode
  • Episode
  • Episode

Lorsque je tente quelque chose comme ça (qui a travaillé dans une autre partie de mon code):

String text = "Episode " + cursor.getString("blah"); 
text = text.replaceAll("\\n",""); 

Je reçois la sortie même liste exacte :(

Pourquoi ne pas J'utilise créer une vue personnalisée avec deux zones de texte à côté de l'autre? Il est difficile pour moi d'obtenir que pour faire joli:/

+0

Que voyez-vous si vous vous connectez les valeurs de 'Text'? Je soupçonne que votre curseur ne retourne pas ce que vous attendez. –

+0

Si j'inscris cursor.getString ("blah") j'obtiens le bon numéro ... puis si je connecte "Episode" + cursorstuff j'obtiens le texte correct (pas de nouvelle ligne montrée là) – IamAlexAlright

Répondre

3

Vérifiez s'il y a nouvelle ligne à la biggining avant de remplacer et faire le même test à nouveau

for(int i=0; cursor.getString("blah").length()-1; i++) 
{ 

    if(cursor.getString("blah").charAt(i)=='\\n') <-- use the one constant for line separator i fogot what was the name 
    { 
     Log.i("NEW LINE?", "YES, WE HAVE"); 
    } 

} 

Ou utilisez .contains("\n"); méthode

Vérifiez le xml pour la largeur de la vue de texte aussi bien.

Pourquoi utiliser getString() lorsque vous récupérez entier? Utilisez le getInt() puis Integer.toString(theint) lorsque vous définissez dans la vue de texte ..

+0

Est-ce que getString et getInt font vraiment ce gros de une différence? Btw, c'est la largeur de la textview qui est le problème ... nvm - compris – IamAlexAlright

+1

Utilisez LayoutParams puis recherchez la méthode pour définir les paramètres de mise en page (j'ai oublié le nom de la méthode) c'était comme textview.setLayoutParams (myLP); quelque chose comme ça, puis ajoutez-le à la mise en page ou doit directement à partir du xml. Définissez-le sur fill_pattern ou wrap_content dépend de la façon dont vous voulez regarder. N'UTILISEZ PAS DE NOMBRE FIXE DE PIXELS. –

+0

J'ai oublié que j'avais copié la plupart des customadapter d'un autre et oublié de changer les paramètres de mise en page - merci! – IamAlexAlright

0

Il semble que vous rencontriez des problèmes d'encapsulation plutôt que des problèmes de retour à la ligne. Changer ceci:

String text = "Episode " + cursor.getString("blah"); 

à ceci:

String text = "Episode" + cursor.getString("blah"); 

Et voir si cela change la sortie. Postez votre mise en page xml s'il vous plait?

-1

Avez-vous essayé cursor.getString ("bla").trim()

0

cela a fonctionné pour mon (sur android 4.4):

(où le corps est une chaîne avec un saut de ligne est entrée d'une vue EditText sur le combiné)

for (int i=0; i<body.length(); i++) { 
    if (body.charAt(i) == '\n' || body.charAt(i) == '\t') { 
     body = body.substring(0, i) + " " + body.substring(i+1, body.length());       
    } 
} 
3
text.replaceAll(System.getProperty("line.separator"), "")); 
1

Il est une erreur dans votre code. Utilisez "\ n" au lieu de "\\ n"

String myString = "a string\n with new line" 
myString = myString.replaceAll("\n",""); 
Log.d("myString",myString); 
0

Cela pourrait vous aider:

response = response.replaceAll("\\s+","");