首先我们得看一下设计路程
- 对应文件的具体位置:
strings.xml
<resources>
<string name="app_name">Starbuzz</string>
<string name="title_activity_drink_category">title_activity_drink_category</string>
<string name="title_activity_drink">title_activity_drink</string>
<string name="title_activity_food_category">title_activity_food_category</string>
<string name="title_activity_food">title_activity_food</string>
<string name="starbuzz_logo">Starbuzz_First_Page</string>
<string name="starbuzz_drink_info">Starbuzz_drink_info</string>
<string name="starbuzz_food_info">Starbuzz_food_info</string>
<string-array name="options">
<item>Drinks</item>
<item>Food</item>
<item>Stores</item>
</string-array>
</resources>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.starbuzz">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".TopLevelActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DrinkCategoryActivity"
android:label="@string/title_activity_drink_category">
</activity>
<activity android:name=".DrinkActivity"
android:label="@string/title_activity_drink">
</activity>
<activity android:name=".FoodCategoryActivity"
android:label="@string/title_activity_food_category">
</activity>
<activity android:name=".FoodActivity"
android:label="@string/title_activity_food">
</activity>
</application>
</manifest>
Drink.java
package com.example.starbuzz;
public class Drink {
private String name;
private String description;
private int imageResourceId;
public static final Drink[] drinks={
new Drink("Latte","A couple of espresso shots width steamed milk",R.drawable.latte),
new Drink("Cappucino","A couple of espresso shots width steamed milk",R.drawable.cappuccino),
new Drink("Filter","A couple of espresso shots width steamed milk",R.drawable.filter)
};
private Drink(String name,String description,int imageResourceId){
this.name=name;
this.description=description;
this.imageResourceId=imageResourceId;
}
public String getDescription(){
return description;
}
public String getName(){
return name;
}
public int getImageResourceId(){
return imageResourceId;
}
public String toString(){
return this.name;
}
}
activity_top_level.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TopLevelActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:layout_editor_absoluteX="63dp"
tools:layout_editor_absoluteY="318dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="100dp"
android:src="@drawable/starbuzz_logo"
android:contentDescription="@string/starbuzz_logo" />
<ListView
android:id="@+id/list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/options">
</ListView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
TopLevelActivity.java
package com.example.starbuzz;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
public class TopLevelActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_top_level);
AdapterView.OnItemClickListener itemClickListener=new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View itemView, int position, long id) {
if (position==0){
Intent intent=new Intent(TopLevelActivity.this,DrinkCategoryActivity.class);
startActivity(intent);
}
if (position==1){
Intent intent=new Intent(TopLevelActivity.this,FoodCategoryActivity.class);
startActivity(intent);
}
}
};
ListView listView=(ListView)findViewById(R.id.list_options);
listView.setOnItemClickListener(itemClickListener);
}
}
DrinkCategoryActivity.java
package com.example.starbuzz;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class DrinkCategoryActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ListView listDrinks=getListView();
ArrayAdapter<Drink>drinksAdapter=new ArrayAdapter<Drink>(
this,android.R.layout.simple_list_item_1,Drink.drinks);
listDrinks.setAdapter(drinksAdapter);
}
public void onListItemClick(ListView listDrinks , View itemView, int position, long id){
Intent intent=new Intent(DrinkCategoryActivity.this,DrinkActivity.class);
intent.putExtra(DrinkActivity.EXTRA_DRINKNO,(int) id);
startActivity(intent);
}
}
activity_drink.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/photo"
android:layout_width="190dp"
android:layout_height="190dp"
android:contentDescription="@string/starbuzz_drink_info"/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
DrinkActivity.java
package com.example.starbuzz;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class DrinkActivity extends Activity {
public static final String EXTRA_DRINKNO ="drinkNo";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drink);//가만히 생각해보니 food는 xml설정할 필요없는것 같다.
int drinkNo=(Integer)getIntent().getExtras().get(EXTRA_DRINKNO);
Drink drink=Drink.drinks[drinkNo];
ImageView photo=(ImageView)findViewById(R.id.photo);
photo.setImageResource(drink.getImageResourceId());
photo.setContentDescription(drink.getName());
TextView name=(TextView)findViewById(R.id.name);
name.setText(drink.getName());
TextView description=(TextView)findViewById(R.id.description);
description.setText(drink.getDescription());
}
}
下面是更完善功能,添加了FOOD功能
Food .java
package com.example.starbuzz;
public class Food {
private String name;
private String description;
private int imageResourceId;
public static final Food[] foods={
new Food("Hamburger","Hamburger is delicious",R.drawable.hamburger),
new Food("Chicken","Chicken is delicious",R.drawable.chicken),
new Food("Sandwich","Sandwich is delicious",R.drawable.sandwich)
};
private Food(String name,String description,int imageResourceId){
this.name=name;
this.description=description;
this.imageResourceId=imageResourceId;
}
public String getDescription(){
return description;
}
public String getName(){
return name;
}
public int getImageResourceId(){
return imageResourceId;
}
public String toString(){
return this.name; //FoodCategoryActivity에서
} // ArrayAdapter<Food> Food.foods에서 to String 한다 name
} // return this.name 에서 return this.description 로 바꾸면 화면에서 문구가 달라짐
FoodCategoryActivity.java
package com.example.starbuzz;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class FoodCategoryActivity extends ListActivity {
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
ListView listFoods=getListView();
ArrayAdapter<Food>foodsAdapter=new ArrayAdapter<Food>(
this,android.R.layout.simple_list_item_1,Food.foods);
listFoods.setAdapter(foodsAdapter);
}
public void onListItemClick(ListView listFoods , View itemView, int position, long id){
Intent intent=new Intent(FoodCategoryActivity.this,FoodActivity.class);
intent.putExtra(DrinkActivity.EXTRA_FOODNO,(int) id);
startActivity(intent);
}
}
FoodActivity.java
package com.example.starbuzz;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class FoodActivity extends Activity {
public static final String EXTRA_FOODNO ="foodNo";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_food);
int foodNo=(Integer)getIntent().getExtras().get(EXTRA_FOODNO);
Food food=Food.foods[foodNo];
ImageView photo=(ImageView)findViewById(R.id.photo);
photo.setImageResource(food.getImageResourceId());
photo.setContentDescription(food.getName());
TextView name=(TextView)findViewById(R.id.name);
name.setText(food.getName());
TextView description=(TextView)findViewById(R.id.description);
description.setText(food.getDescription());
}
}