2013-03-01 2 views
0

Я делаю приложение, представляющее выставочный зал, и в этот момент я создал слишком много занятий.Как структурировать приложение со многими видами деятельности?

Основной вид является GridView, содержащий всю серию автомобилей. (Каждый GridView Пункт открывает новый класс, таким образом, есть 9 классов с очень похожим кодом)

Как я могу структурировать его?

+2

Вы можете использовать функцию 'putExtra (String, Bundle)' для отправки дополнительной информации в свои намерения, поэтому вы просто пишете 1 класс, а с помощью putExtra вы отправляете строку в класс, чтобы он знал, какие автомобили показывать, см. Здесь для получения дополнительной информации: http://developer.android.com/training/basics/firstapp/starting-activity.html – Navid777

+0

сначала сделайте эти действия более универсальными, не храните данные в коде (только для чтения вы можете использовать fx "x .json "в raw/assets или в Интернете) ... это швы, как вы не потратили достаточно времени на планирование этого приложения ... далее не используйте нижнюю вкладку http://developer.android.com/design/patterns /pure-android.html ... помните, что у вас также могут быть возможности для создания приложения HTML5 – Selvin

+0

Я не пытаюсь копировать стиль iOS или что-то еще, просто, когда я начал проект, я нашел учебник с вкладками внизу экрана и работал очень хорошо Я придерживаюсь этого. Проект не для BMW, это проект, который я должен представить в своем университете, поэтому приложение даже не будет в игровом магазине google. –

ответ

1

У меня на самом деле нет времени, чтобы написать все это, означающий объединяющий класс, но вот подсказка для вас. Используйте флаг, который укажет модель автомобиля (например, Z4, M6), затем используйте его внутри класса, чтобы определить дерево, на котором должен работать код. Замените жестко заданные значения на строковые ресурсы (просто сделайте это, никаких других замечаний не потребуется). При создании экземпляра класса и использовании его функций учитывайте флаг и помещайте его в состояние if() или внутри switch. Если в некоторых моделях требуется больше кода, чем другие, вы всегда можете инкапсулировать его в часть кода, который отвечает за модель. Но избегайте слишком много гнездования, потому что это будет беспорядочно, например, если у вас определено 100 классов, которые на 99% делают то же самое, что и другие. Всегда старайтесь повторно использовать свой код как можно больше. Это уменьшит количество повторяющихся записей (копирование/склеивание), а также размер приложения, необходимую ему память и т. Д. Вывод: попробуйте объединить общие части классов в один класс (к RULE THEM ALL :-)) и использовать флаги, чтобы программа knwo делала там.

2

Чтобы положить немного больше мяса на @ g00dy, начните с создания класса

class BMW { 
    // Reference codes for every series 
    public final static int SERIES_1 = 0; 
    public final static int SERIES_2 = 1; 
    // etc 
    public final static int NUMBER_SERIES = 9; 


    // All the code needed for every car 

    // eg. 
    public String giveManufacturuer() { 
     return "BMW"; // But see @g00dy - use string resources 
    } 

    public String giveSeries() { 
     return XXXXX; // Depends on which approach you choose, see below 
    } 

    public String giveModelName() { 
     return XXXXX; // Depends on which approach you choose, see below 
    } 
} 

Вы можете загрузить все изменения в этот класс (добавить в ссылках кодов для каждого автомобиля и настроить некоторые таблицы в упростить индексирование).

Или вы могли бы расширить класс с помощью наследования для каждого класса:

class Series1 extends BMW { 
    @Override 
    public String giveSeries { 
     return "Series 1"; 
    } 
} 

class Series1M3Door extends Series1 { 
    @Override 
    public String giveModelName { 
     return "3 Door"; 
    } 
} 

Когда вы тогда экземпляр окончательный класс будет иметь все три функции работают правильно.

Этот подход является опрятным, но по-прежнему даст вам много уроков. Я подозреваю, что за то, что вы делаете, некоторые хорошо продуманные информационные таблицы (к которым обращаются серии и код модели) могут работать лучше внутри скрытого класса.

Другой, возможно лучший подход, может заключаться в структурировании кода с использованием информации, которую вы возвращаете в качестве основных классов.

Смежные вопросы