Обобщенная активность Android

#android #android-activity

#Android #android-активность

Вопрос:

Я новичок в программировании на Android. Мой вопрос в том, что у меня есть список (ListView) из 8 заголовков ресторанов. При нажатии на любой из них откроется новая страница (activity), содержащая меню и подробную информацию о ресторане. Я понимаю, что реализация 8 действий была бы расточительной, поэтому, вероятно, у меня будет общая информация о ресторане.

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

—-MainActivity.java——

 String [] restaurants = {"abc","def"....};
int POSITION_ACT;           

list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id){
            POSITION_ACT=position;
            customActivity(view);
           }
    });

public void customActivity(View view) {

    Intent intent = new Intent(this, RestaurantDetails.class);
    intent.putExtra(MESSAGE, "You clicked this restaurant: "   restaurants[POSITION_ACT]);

    startActivity(intent);
}
 

—generalrestaurant.java—-

     Intent intent = getIntent();
    String msg = intent.getStringExtra(foodActivity.MESSAGE);
    TextView tt1 = (TextView) findViewById(R.id.tt1);

    tt1.setText(msg);
 

Комментарии:

1. определить big chunks of information

2. Ресторан должен быть объектом со всей необходимой вам релевантной информацией (сериализуемой). Передайте это через намерение.

Ответ №1:

Вы не должны передавать много информации. Информация о вашей модели должна быть в экземплярах класса Restaurant. Затем вы можете сохранить все эти экземпляры в ArrayList в одноэлементном. Напишите средство получения для синглтона, которое возвращает экземпляр Restaurant, а затем вызовите его из действия RestaurantDetails, используя отправленный вами дополнительный (возможно, вы хотите сделать это UUID). Наконец, когда активность прекращается, вы должны сохранить данные ресторана из синглтона в необработанный XML-файл или что-то в этом роде и прочитать его обратно, когда приложение снова запустится.

Комментарии:

1. Передача его как сериализуемого объекта, как предлагали другие, также будет работать, но мне нравится использовать предложенный мной метод, потому что он помогает вам придерживаться шаблона проектирования MVC.

Ответ №2:

Вы можете создать POJO для информации о вашем ресторане и записать в него такие данные, как название, местоположение, стоимость на душу населения, рейтинг и т. Д. Затем ваш POJO должен реализовать Serializable или Parcelable . В вашем намерении вы можете передать свой POJO, используя intent.putExtra(String, Serializable) или intent.putExtra(String, Parcelable) . Во втором действии вы можете получить объект и отобразить свои данные в своем действии. Взгляните на приведенные ниже ссылки :

http://developer.android.com/reference/java/io/Serializable.html

http://developer.android.com/reference/android/os/Parcelable.html