Autore Topic: Problema estrazione testo HTML da database sqlite  (Letto 520 volte)

Offline Virtual Golem

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Problema estrazione testo HTML da database sqlite
« il: 10 Gennaio 2013, 17:55:52 CET »
0
Salve a tutti...
sto comiciando a esplorare android, e nella mia prima app sto utilizzando un database sqlite per memorizzare testi di canzoni, gestito attraverso un content provider.
Il database è stato creato e popolato esternamente all'applicazione, per poi venire inserito nella cartella assets; ho usato la libreria SQLiteAssetHelper (https://github.com/jgilfelt/android-sqlite-asset-helper) per la gestione del db ed il suo versionamento.
Per l'accesso ai dati, invece, uso un LoaderManager che popola una prima ListView con i titoli delle canzoni; al clic su uno degli item della lista, faccio partire una seconda activity che dovrebbe visualizzare il testo (recuperato a sua volta da un campo della stessa tabella del db).
Di seguito il codice:

Codice (Java): [Seleziona]
public class TestoActivity extends Activity {
       
        private WebView textField;
        private Uri uriCanzone;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_testo);
                // Show the Up button in the action bar.
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                        getActionBar().setDisplayHomeAsUpEnabled(true);
                }

                textField = (WebView) findViewById(R.id.testoText);
               
                // Ricezione uri della canzone da visualizzare
                Intent i = getIntent();
                Bundle extras = i.getExtras();

                uriCanzone = extras.getParcelable(SongsContentProvider.CANZONI_CONTENT_ITEM_TYPE);

                String[] projection = { SongsDbHelper.COLUMN_CANZONI_TITOLO, SongsDbHelper.COLUMN_CANZONI_TESTO };
                String[] selArgs = { uriCanzone.getLastPathSegment() };
                Cursor cursor = getContentResolver().query(uriCanzone, projection, null, selArgs, null);
                String source = new String();
                if (cursor.moveToFirst()) {
                        source = cursor.getString(cursor.getColumnIndexOrThrow(SongsDbHelper.COLUMN_CANZONI_TESTO));
                };

                textField.loadData(source, "text/html", "utf-8");

                cursor.close();
               
        }

Il meccanismo sembra funzionare correttamente; tuttavia, c'è un problema. Il testo della canzone memorizzato nel db include alcuni tag html per la gestione della formattazione di alcune porzioni di testo (ad esempio, il ritornello va messo in grassetto). Ma mi pare che quando venga eseguita la query, questi tag vengano eliminati automaticamente, per cui il grassetto non viene visualizzato correttamente.

Vi risulta questo comportamento? Qualcuno ha qualche idea su come risolvere?

Ho descritto a parole la struttura generale ed inserito solo il codice dell'activity interessata per non appesantire il topic... Nel caso servissero altre informazioni le inserirò.
Le API che utilizzo per il progetto sono:
livello minimo 8
livello target 17
Per l'esecuzione ho utilizzato un dispositivo con API level 15.

Grazie in anticipo per l'aiuto che mi darete.

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
R: Problema estrazione testo HTML da database sqlite
« Risposta #1 il: 10 Gennaio 2013, 19:13:48 CET »
0
Al posto di mettere i tag tra < e > prova a metterli magari tra [ e ] oppure ( e )...poi al momento di inserirla nella View che ti occorre esegui una sostituzione doppia e vedi se cambia qualcosa.
Ma il risultato della query te lo da con i tag integri e tutto a posto come il campo nel DB?
Perché secondo me non é problema a livello di DB

Offline Virtual Golem

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Re:Problema estrazione testo HTML da database sqlite
« Risposta #2 il: 10 Gennaio 2013, 19:53:13 CET »
0
Visualizzando la stringa source da debug di eclipse, ciò che viene fuori è il testo della canzone che c'è nel database senza i tag...
Non ho provato a usare le parentesi al posto dei < e >, penso che potrebbe essere una buona soluzione di ripiego.

Se ho capito bene, prima di eseguire l'istruzione loaddata, dovrei semplicemente elaborare la stringa source ed effettuare le sostituzioni in modo da riottenere il testo con i tag posizionati correttamente...

Beh, appena mi sarà possibile proverò così, a rigor di logica dovrebbe andare... ma mi piacerebbe sapere ugualmente come mai i tag scompaiano nel nulla!