《移動應用程式設計基礎》實驗三點選單串列實作
實驗名稱:
點選單串列實作
所使用的工具軟體及環境:
JDK1.8,Android Studio
一、實驗目的:
進一步理解Android各種控制元件的使用,加深控制元件的屬性、方法的使用,熟練掌握ListView控制元件的使用,熟練掌握對話框的使用,
二、實驗內容:
1.實作點選單串列
1.1布局結構

![]()
串列布局分為兩大部分,上半部分顯示串列內容,底部顯示所有菜品的總價;
菜品項如圖所示包括
1.圖片,圖片格式120*120;
2.標題,居中,android:textAppearance="?android:attr/textAppearanceLarge",
3.菜品介紹內容,最多顯示3行,超過部分用…表示,android:textAppearance="?android:attr/textAppearanceMedium"
4.顯示單價,顯示字體android:textAppearance="?android:attr/textAppearanceMedium"
5.左右兩端顯示按鈕,中間顯示數字,
1.2功能
1.以串列方式顯示點選單;
2.點擊“-”或“+”按鈕,購買數量作相應變化,同時,總價也隨之變動
1.3所用資源
1.資料
<array name="item_content">
<item>“白灼”是粵菜的一種烹調技法,就是用滾水或湯將食物燙熟,
多數的北方人都對“白灼”有一種概念上的混淆,認為白灼就是用白水煮一下撈出,其實不然,那是對字面上的一個誤解,真正的白灼蝦還是有幾道工序的,經過一個朋友的指點,才得以頓悟,
白灼蝦其實是最簡單的,無需過多調料,沒有繁雜的程序,也不必耗費大量的時間,甚至不用考慮食用時的溫度,不用過多思忖擺盤的裝飾,搭配一個同樣簡約的酸咸小味碟,就可以上桌了,
特別是想吃蝦又懶得太操勞的人,可以選擇做這道菜,簡單又新鮮,也是我最鐘愛的一道保留菜譜,
作為一只基圍蝦,衣衫齊整的出場體面面完整,無疑是對它的最高獎賞,紳士而優雅地被人類享用當然是最好的結局,
</item>
<item>
相傳,烤鴨之美,是源于名貴品種的北京鴨,它是當今世界最優質的一種肉食鴨,
據說,這一特種純北京鴨的飼養,約起于千年前左右,是因遼金元之歷代帝王游獵,偶獲此純白野鴨種,后為游獵而養,一直延續下來,才得此優良純種,并培育成今之名貴的肉食鴨種,即用填喂方法育肥的一種白鴨,故名“填鴨”,
不僅如此,北京鴨曾在百年以前傳至歐美,經繁育一鳴驚人,因而,作為優質品種的北京鴨,成為世界名貴鴨種來源已久,
</item>
</array>
<array name="item_title">
<item>白灼蝦</item>
<item>北京烤鴨</item>
</array>
<array name="item_price">
<item>58</item>
<item>128</item>
</array>
2.圖片


3.布局檔案(各自實作)
2.點擊每個串列項,以彈出Dialog方式顯示該菜品的詳情
2.1布局

包括title,圖片,菜品標題,詳情,單價和按鈕
2.2功能
點擊串列項,將該菜品的資訊(圖片,菜品標題,詳情和單價)以建構式引數的方式傳遞到彈出對話框中,彈出對話框通過自定義界面布局的形式實作菜品詳情的顯示,

三、實驗結果測驗

主要的布局檔案和string.xml檔案,MainActivity.java為登錄界面的java檔案,ProgressActivity.java為選單界面的java檔案,dialog和dialog2為兩個普通對話框的布局檔案,progress為選單的listview的布局檔案,simpleadapter_list_item為listview中item的布局檔案,
主要代碼:(完整所有代碼在資源下載壓縮包中,文章結尾有資源下載鏈接)
//ProgressActivity.java
package com.example.login;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.DialogFragment;
import android.content.DialogInterface;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
//import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.example.login.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ProgressActivity extends AppCompatActivity {
private ListView listView;
private int [] ivR = {
R.drawable.pic1,R.drawable.pic2,
};
private String[] titles;
private String[] content;
private String[] price;
private Button less,add;
private TextView num;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progress);
//參考string中的檔案
listView = (ListView)findViewById(R.id.listView);
List<HashMap<String,Object>> arrayList = new ArrayList<>();
titles =getResources().getStringArray(R.array.item_title);
content =getResources().getStringArray(R.array.item_content);
price =getResources().getStringArray(R.array.item_price);
//創建自定義Adapter,繼承BaseAdapter
MyBaseAdapter MyBase=new MyBaseAdapter();
listView.setAdapter(MyBase);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
AlertDialog.Builder builder = new AlertDialog.Builder(ProgressActivity.this);
builder.setTitle("菜肴詳情");
builder.setCancelable(true); //點擊對話框以外的區域是否讓對話框消失
//設定正面按鈕
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
//創建AlertDialog物件
AlertDialog dialog = builder.create();
//對話框顯示的監聽事件
if(i==0)
{
View dialogView = View.inflate(ProgressActivity.this, R.layout.dialogactivity, null);
dialog.setView(dialogView);
}
else
{
View dialogView = View.inflate(ProgressActivity.this, R.layout.dialogactivity2, null);
dialog.setView(dialogView);
}
dialog.show();
}
});
}
private class MyBaseAdapter extends BaseAdapter{
@Override
public int getCount() {
return 2;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View vi=View.inflate(ProgressActivity.this,R.layout.simpleadapter_list_item,null);
ImageView imageView=(ImageView) vi.findViewById(R.id.list_item_iv);
TextView titles_=(TextView) vi.findViewById(R.id.list_item_tv1);
TextView content_=(TextView) vi.findViewById(R.id.list_item_tv2);
TextView price_=(TextView) vi.findViewById(R.id.list_item_tv3);
TextView num=(TextView)vi.findViewById(R.id.textView_num);
TextView sum=(TextView)findViewById(R.id.textView_sumprice);
Button less=(Button)vi.findViewById(R.id.button_less);
Button add=(Button)vi.findViewById(R.id.button_add);
imageView.setBackgroundResource(ivR[i]);
titles_.setText(titles[i]);
content_.setText(content[i]);
price_.setText(price[i]);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int a=Integer.parseInt((String)num.getText());
String a0=Integer.toString(a+1);
num.setText(a0);
if(i==0){
int t=Integer.parseInt((String)sum.getText());
String t0=Integer.toString(t+58);
sum.setText(t0);
}
else{
int t=Integer.parseInt((String)sum.getText());
String t0=Integer.toString(t+128);
sum.setText(t0);
}
}
});
less.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int a=Integer.parseInt((String)num.getText());
if(a==0)
{
String a0=Integer.toString(a);
num.setText(a0);
}
else {
String a0=Integer.toString(a-1);
num.setText(a0);
if(i==0){
int t=Integer.parseInt((String)sum.getText());
String t0=Integer.toString(t-58);
sum.setText(t0);
}
else
{
int t=Integer.parseInt((String)sum.getText());
String t0=Integer.toString(t-128);
sum.setText(t0);
}
}
}
});
return vi;
}
}
}
實驗結果截圖:





心得與體會:
本次實驗學習時間較長,但是識訓頗多,對android常用高級控制元件進行使用,學習了listview的還有BaseAdapter的使用,對普通對話框Dialog有了進一步的學習,還復習了以前實驗的內容與知識,對今后android開發軟體的學習有了進一步的加深與進步,
https://download.csdn.net/download/weixin_48388330/76125440
資源中的圖片以及內容只適用與學習
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413502.html
標籤:其他
