Android: In che modo devo separare il codice da stile?

A partire dalla programmazione Android, proveniente da html / php / css, ho cercato il web per un modo semplice per separare il codice dal mio stile – per ora ho bisogno di visualizzare i dati da un database in una vista di elenco o tabella.

In poche parole, ottengo un cursore dalla base di dati, lo ripeto, creando each voce di elenco dynamicmente nel codice come TextViews. Poi vorrei applicare uno stile da un file di layout esterno xml a ciascun elemento.

  • mantenendo un valore variabile in tutte le attività di android
  • Controllo dello schermo di block Android e tastiera
  • Lo switch GPsStatus tra GPS_EVENT_STARTED e GPS_EVENT_STOPPED
  • background un'applicazione Android-retriggers utilizzando il button di return
  • RecyclerView ha messo i dati quando si scorre
  • HttpDelete con il corpo
  • Pseudo-codice:

    style.xml:

    // mystyle: grassetto, 12pt

    // yourstyle: corsivo, 11pt

    Attività:

    for (each cursor-entry) { tv1 = new TextView(); applyStyle(tv, mystyle); tv2 = new TextView(); applyStyle(tv, yourstyle); //Apply content to textviews from the cursor... } mainLayout.setView(tv1); mainLayout.setView(tv2); 

    Gli esempi di codice che ho trovato in networking, utilizzano più righe di codice o più file xml (utilizzando l'inflazione o cursorAdapters) e l'IMO diventano rapidamente gonfiati. Voglio solo un bel modo pulito per applicare uno stile a un codice creato dynamicmente. È ansible?

  • BackupManager non chiama il trasporto di backup
  • Impostazione di allarme Android con data specifica
  • Come condividere text e image su Facebook utilizzando Intent
  • Come eseguire (non solo l'installazione) un'applicazione android utilizzando il file .apk?
  • Come faccio a get il nome dell'operatore di un numero in entrata in androidi ..?
  • Non printingre le pagine di ViewPager
  • One Solution collect form web for “Android: In che modo devo separare il codice da stile?”

    Se si utilizza ListView, è così semplice avere un file XML per le righe. L'unica cosa che serve è un file XML e una class Adapter. Date un'occhiata a questo semplice esempio:

    Per leggere i dati dal database, creare una class di helper come questa:

     public class MessagingDatabaseAdapter { protected SQLiteDatabase database; public MessagingDatabaseAdapter(Context context) { MessagingDatabaseHelper databaseHelper = new MessagingDatabaseHelper(context, "message_history_db"); database = databaseHelper.getWritableDatabase(); } public void close() { database.close(); } public void Entity[] getAllEntities() { Entity[] values = null; String query = "select * from TABLE_NAME"; Cursor cursor = null; try { cursor = database.rawQuery(query, null); if( cursor.moveToFirst() ) { int s = cursor.getCount(); values = new Entity[s]; do { Entity entity = new Entity(); entity.setSomeProperty(cursor.getInt(cursor.getColumnIndex(SOME_PROPERTY_COLUMN))); values[i++] = entity; } while( cursor.moveToNext() ); } } catch(Exception ex) { } finally { if( cursor != null ) { cursor.close(); } return values; } } protected class MessagingDatabaseHelper extends SQLiteOpenHelper { public MessagingDatabaseHelper(Context context, String name) { super(context, name, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("Your SQL to create Tables"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } } 

    Nella tua class Attività:

     MessagingDatabaseAdapter db = new MessagingDatabaseAdapter(); values = db.getAllEntities(); db.close(); list_view = (ListView) findViewById(R.id.list_view); ListAdapter adapter = new ListAdapter(this, values); list_view.setAdapter(adapter); 

    E class ListAdapter:

     public class ListAdapter extends ArrayAdapter<Entity> { final Context context; final Entity[] values; public ListAdapter(Context context, Entity[] values) { super(context, R.layout.list_screen, values); this.values = values; this.context = context; } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.list_view_item, parent, false); TextView datetimeTextView = (TextView) rowView.findViewById(R.id.list_view_datetime_text_view); datetimeTextView.setTypeface(someTypeFace); return rowView; } } 

    E file XML di layout di righe (list_view_item.xml):

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/BorderedFrame" > <TextView android:id="@+id/inbox_list_view_datetime_text_view" style="@style/MediumText" android:layout_width="wrap_content" > </TextView> </RelativeLayout> 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.