Autore Topic: Usare tag html su testo proveniente da database sqlite  (Letto 545 volte)

Offline Shakespirito

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    S2 e Nexus 7
  • Sistema operativo:
    Windows 7
Usare tag html su testo proveniente da database sqlite
« il: 21 Maggio 2013, 23:40:50 CEST »
0
Allora ragazzi, sono una frana in programmazione. Faccio altro nella vita, ma mi sono messo in testa di fare una semplice app per android basata praticamente su solo dei testi, quindi non dovrebbe essere difficile. Dopo giorni e giorni sono riuscito a fare un database, inserirvi dei dati e vederli con una listview.
Ora il problema è che alcune colonne devono poter utilizzare i tag html. vi posto il testo del file main_activity.java
Citazione
package com.example.devx;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.text.Html;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
   
   //Android listview object
   //   ListView listViewPhoneBook;
   
        DBAdapter books;
     
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 TextView tv1 = (TextView) findViewById(R.id.textView1);
  tv1.setText(Html.fromHtml(books.getAllTitles()), TextView.BufferType.SPANNABLE);

        openDB();
        //---add 2 titles---
        /* if(books.getAllTitles().getCount()==0)*/ {//inserimento dati, solo se il db è vuoto
        long id;
        id = books.insertTitle(
               Html.escapeHtml("047028   <B5818>"),
              "C# 2008 Programmer's Reference",
              "Wrox");       
        id = books.insertTitle(
               Html.escapeHtml("0470</br>17661<br/>X"),
              "Professional Windows </br>Vista Gadgets Programming",
              "Wrox");}
       
       
   populateListViewFromDB();}
   
   
   
   private void openDB(){
      books = new DBAdapter(this);
      books.open();
   }
   private void closeDB(){
      books.close();}
   
   
       
        private void populateListViewFromDB() {
           Cursor cursor = books.getAllTitles();
       
           
           startManagingCursor(cursor);
           
           
           String[] fromFieldNames = new String[]
                 {DBAdapter.KEY_ISBN};
           int[] toViewIDs = new int []
                 {R.id.textView1};
                 
                 
        SimpleCursorAdapter myCursorAdapter =
              new SimpleCursorAdapter(
                    this,
                    R.layout.item_layout,
                    cursor,
                    fromFieldNames,
                    toViewIDs);
       
        ListView myList = (ListView) findViewById(R.id.listViewFromDB);
        myList.setAdapter(myCursorAdapter);
          // TODO Auto-generated method stub
          
       }
}

e quello del dbadapter.java
Citazione
package com.example.devx;


import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_ISBN = "isbn";
    public static final String KEY_TITLE = "title";
    public static final String KEY_PUBLISHER = "publisher";   
    private static final String TAG = "DBAdapter";
   
    private static final String DATABASE_NAME = "books";
    private static final String DATABASE_TABLE = "titles";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_CREATE =
        "create table titles (_id integer primary key autoincrement, "
        + "isbn text not null, title text not null, "
        + "publisher text not null);";
       
    private final Context context;
   
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }
   
   
    //FIN QUI LE COSTANTI
   
   
    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL(DATABASE_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion,
                              int newVersion)
        {
            Log.w(TAG, "Upgrading database from version " + oldVersion
                  + " to "
                  + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS titles");
            onCreate(db);
        }
    }   

   
   
    //---opens the database---
    public DBAdapter open() throws SQLException
    {
        db = DBHelper.getWritableDatabase();
        return this;
    }

    //---closes the database---   
    public void close()
    {
        DBHelper.close();
    }
   
    //---insert a title into the database---
    public long insertTitle(String htmlString, String title, String publisher)
    {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ISBN, htmlString);
        initialValues.put(KEY_TITLE, title);
        initialValues.put(KEY_PUBLISHER, publisher);
        return db.insert(DATABASE_TABLE, null, initialValues);
    }

    //---deletes a particular title---
    public boolean deleteTitle(long rowId)
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID +
              "=" + rowId, null) > 0;
    }
   
 
   
    //---retrieves all the titles---
    public Cursor getAllTitles()
    {
        return db.query(DATABASE_TABLE, new String[] {
              KEY_ROWID,
              KEY_ISBN,
              KEY_TITLE,
                KEY_PUBLISHER},
                null,
                null,
                null,
                null,
                null);
    }
   

    //---retrieves a particular title---
    public Cursor getTitle(long rowId) throws SQLException
    {
        Cursor mCursor =
                db.query(true, DATABASE_TABLE, new String[] {
                      KEY_ROWID,
                      KEY_ISBN,
                      KEY_TITLE,
                      KEY_PUBLISHER
                      },
                      KEY_ROWID + "=" + rowId,
                      null,
                      null,
                      null,
                      null,
                      null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }
/*

un tizio mi ha consigliato di usare htmlescape (come ho fatto sopra nell'inserimento dei dati), e poi
di cambiare il codice del textview, secondo la seguente istruzione:
textView.setText(Html.fromHtml(StringFromTheCursor), TextView.BufferType.SPANNABLE


quello che non capisco è cosa cavolo sia quella "stringfromthecursor". Mi ha spiegato che è un dato che dovrei aver creato da qualche parte, ma proprio non riesco a capire a cosa si riferisca. Per cosa starebbe stringfromthecursor? Come creo simile elemento? in quale file?
Aiutatemi!!!

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Usare tag html su testo proveniente da database sqlite
« Risposta #1 il: 22 Maggio 2013, 09:35:11 CEST »
0
stringfromthecursor penso che sia la variabile che contiene la tua stringa