#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