У меня есть модель, состоящая из нескольких списков, которые используются в ленте новостей. Например, существуют различные списки спортивных рассказов и истории автомобилей. Мне интересно, как я должен их организовать.Как организовать модель, состоящую из нескольких списков
class NewsFeed{
public List<SportStory> sportStories;
public List<CarStory> carStories;
public Map<int, String> storyType;
public Map<int, int> storyPositions;
public String getType(int position){
storyType.get(position);
}
public String getPositionInList(int position){
storyPositions.get(position);
}
}
class SportStory{
public String sportName;
public String imageUrl;
public String notablePlayer;
public int favourites;
}
class CarStory{
public int storyType;
public String carName;
public String carType;
public String carColor;
}
Вид затем делает рассказы в модели с правильным шаблоном, проверяя, какой тип история использует функцию getType
. Он получает положение истории, используя getPositionInList
.
Например, мнение представляло собой пятый рассказ. Он использовал бы функцию getType
и узнал, что это была история автомобиля. Затем он использовал бы getPositionInList
, чтобы увидеть, что пятая история в ленте новостей соответствует второму пункту в списке истории автомобилей.
Другая проблема заключается в том, что при добавлении разных типов рассказов этот класс должен быть изменен.
Если событие события инициировано в представлении, обратный вызов вызывается на контроллере.
public void onSportStoryFavourited(int id){
SportStory story = getSportStoryById(id);
story.favourites = story.favourites + 1;
dao.updateSportStory(story);
view.onStoryFavourited(id);
}
Я действительно не думаю, что этот подход звучит вообще.
Каким образом просмотр или контроллер получат конкретные типы данных из разных сюжетных объектов? Различные истории могут содержать очень разные данные. – Benten
@Benten В своем суперклассе Story вы можете иметь переменную типа экземпляра и getType() accessor. Вы можете вызвать этот метод в объектах Story, чтобы посмотреть, какой тип сюжета они есть, отнести их и обработать их оттуда. – BoDidely
@Benten Возможно, вы захотите принять этот ответ, если он вам поможет. – bourbaki4481472