Domanda

Ho sqliteopenhelper subclassato e ho tutti i componenti del codice pronto da usare. La domanda è che è davvero un buon design per consentire all'attività di accesso diretto ai metodi pubblici nella classe del database principale.

Ho una situazione in cui la mia attività può popolare le informazioni nei suoi layout in base a quali informazioni ottiene dal database - essenzialmente di essere creata dinamicamente in fase di esecuzione. Dal momento che avrò più righe tornando dal database che significa che avrò una serie di qualunque cosa abbia bisogno di ottenere tutte le informazioni.

Quindi qualcosa del genere:

 //in Main Activity Class
 private class menuItems{

    String category_name;
    int category_id;
    int menuItem_id;
    String menu_title;
    String menu_desc;
    String price;
    int icon;
}

  //ArrayList in Main Activity
   ArrayList<menuItems> menu = new ArrayList<menuItems>();
.

La mia attività ha bisogno di questa "struttura" come propria - in modo che possa ricevere le informazioni dal database - qualcosa come GetAllMenIuliTems (), - dove questo metodo eseguire un'istruzione select, mettere insieme le informazioni è la sua "struttura" e torna indietro all'attività principale. Quindi utilizzare queste informazioni all'interno dell'attività per costruire i layout / viste, ecc.

Se dovessi finire con una classe mediatore per parlare con il database, allora anche quella classe avrebbe bisogno della stessa "struttura" definita in esso. Sarebbe un design migliore avere qualcosa del genere:

Mainalty

Databaseaccessore - chiama le classi di database pubbliche (per richiesta da Mainactity)

databasehelper (sottoclassi sqliteopenhelper, esegue tutte le query del database)

Vorrei progettare qualcosa lungo le linee di MVC (modello-view-controller) ma mi chiedevo cosa avete pensato alla praticità di questo in un'applicazione Android.

Grazie!

È stato utile?

Soluzione

In generale, è una buona idea effettuare l'attività e il database come disaccoppiato l'uno dall'altro possibile.Ciò consente di poter modificare l'origine dati creando una classe per accedervi, senza necessità di modificare il codice che si utilizza per presentare i dati.

Quindi, sì, avrei assolutamente una classe separata per accedere ai dati e una classe separata per consentire il passaggio dei dati all'attività.Seguirei anche la legge del demetra in questo caso e fornirei qualsiasi funzionalità necessaria per accedere o modificare i dati sottostanti, senza effettivamente fornire accesso al database sottostante.

Altri suggerimenti

Per concludere - pensa che avere il database separato dalla GUI sia una mossa intelligente nel caso in cui desidero utilizzare nuovamente la classe DB con qualsiasi altra attività.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top