From a71d53e8c40b125f15f521d399e8f8156919d43f Mon Sep 17 00:00:00 2001 From: Spaso1 Date: Thu, 27 Mar 2025 16:06:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=BA=E5=8E=85=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../astral/findmaimaiultra/been/Place.java | 2 +- .../findmaimaiultra/ui/MainActivity.java | 159 +++++++++++++++++- app/src/main/res/menu/main.xml | 5 + 4 files changed, 165 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 0083414..67defb3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 29 targetSdk 34 versionCode 1 - versionName "1.6.0 Ultra" + versionName "1.6.0 b" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/org/astral/findmaimaiultra/been/Place.java b/app/src/main/java/org/astral/findmaimaiultra/been/Place.java index 7a7f61e..9368050 100644 --- a/app/src/main/java/org/astral/findmaimaiultra/been/Place.java +++ b/app/src/main/java/org/astral/findmaimaiultra/been/Place.java @@ -45,7 +45,7 @@ public class Place implements Parcelable { public void setNumJ(int numJ) { this.numJ = numJ; } - + public Place() {} public Place(int id, String name, String province, String city, String area, String address, int isUse, double x, double y, int count, int good, int bad) { this.id = id; this.name = name; diff --git a/app/src/main/java/org/astral/findmaimaiultra/ui/MainActivity.java b/app/src/main/java/org/astral/findmaimaiultra/ui/MainActivity.java index f5b6da5..3e5e62f 100644 --- a/app/src/main/java/org/astral/findmaimaiultra/ui/MainActivity.java +++ b/app/src/main/java/org/astral/findmaimaiultra/ui/MainActivity.java @@ -14,8 +14,9 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.Menu; -import android.widget.Toast; +import android.widget.*; import com.bumptech.glide.Glide; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; import com.google.android.material.navigation.NavigationView; import androidx.navigation.NavController; @@ -24,12 +25,17 @@ import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; import androidx.drawerlayout.widget.DrawerLayout; import androidx.appcompat.app.AppCompatActivity; +import com.google.gson.Gson; import com.yalantis.ucrop.UCrop; +import okhttp3.*; import org.astral.findmaimaiultra.R; +import org.astral.findmaimaiultra.been.Place; import org.astral.findmaimaiultra.databinding.ActivityMainBinding; +import org.astral.findmaimaiultra.ui.home.HomeFragment; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import static android.app.Activity.RESULT_OK; @@ -81,9 +87,160 @@ public class MainActivity extends AppCompatActivity implements ImagePickerListen startActivity(update); return true; }); + menu.findItem(R.id.action_updatePlace).setOnMenuItemClickListener(item -> { + updatePlace(); + return true; + }); return false; } + private void updatePlace() { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(this); + LinearLayout layout = new LinearLayout(this); + layout.setOrientation(LinearLayout.VERTICAL); + layout.setPadding(16, 16, 16, 16); +// 创建一个 ScrollView 并将 LinearLayout 添加到其中 + ScrollView scrollView = new ScrollView(this); + scrollView.addView(layout); + +// 创建店铺名称输入框及其标签 + TextView textNameLabel = new TextView(this); + textNameLabel.setText("店铺名称:"); + EditText textName = new EditText(this); + textName.setHint("请输入店铺名称"); + layout.addView(textNameLabel); + layout.addView(textName); + +// 创建省份输入框及其标签 + TextView textProvinceLabel = new TextView(this); + textProvinceLabel.setText("省份:"); + EditText textProvince = new EditText(this); + textProvince.setHint("请输入省份"); + layout.addView(textProvinceLabel); + layout.addView(textProvince); + +// 创建城市输入框及其标签 + TextView textCityLabel = new TextView(this); + textCityLabel.setText("城市:"); + EditText textCity = new EditText(this); + textCity.setHint("请输入城市"); + layout.addView(textCityLabel); + layout.addView(textCity); + +// 创建地区输入框及其标签 + TextView textAreaLabel = new TextView(this); + textAreaLabel.setText("地区:"); + EditText textArea = new EditText(this); + textArea.setHint("请输入地区"); + layout.addView(textAreaLabel); + layout.addView(textArea); + +// 创建地址输入框及其标签 + TextView textAddressLabel = new TextView(this); + textAddressLabel.setText("地址:"); + EditText textAddress = new EditText(this); + textAddress.setHint("请输入地址"); + layout.addView(textAddressLabel); + layout.addView(textAddress); + +// 创建经度输入框及其标签 + TextView textXLabel = new TextView(this); + textXLabel.setText("经度:"); + EditText textX = new EditText(this); + textX.setHint("请输入经度"); + layout.addView(textXLabel); + layout.addView(textX); + +// 创建纬度输入框及其标签 + TextView textYLabel = new TextView(this); + textYLabel.setText("纬度:"); + EditText textY = new EditText(this); + textY.setHint("请输入纬度"); + layout.addView(textYLabel); + layout.addView(textY); + +// 创建国机数量输入框及其标签 + TextView textNumLabel = new TextView(this); + textNumLabel.setText("国机数量:"); + EditText textNum = new EditText(this); + textNum.setHint("请输入国机数量"); + textNum.setText("1"); + layout.addView(textNumLabel); + layout.addView(textNum); + +// 创建币数量输入框及其标签 + TextView textNumJLabel = new TextView(this); + textNumJLabel.setText("日机数量:"); + EditText textNumJ = new EditText(this); + textNumJ.setHint("请输入日机数量"); + textNumJ.setText(String.valueOf(0)); + layout.addView(textNumJLabel); + layout.addView(textNumJ); + +// 创建是否使用输入框及其标签 + TextView textIsUseLabel = new TextView(this); + textIsUseLabel.setText("是否使用:"); + EditText textIsUse = new EditText(this); + textIsUse.setHint("请输入是否使用"); + textIsUse.setText(String.valueOf(1)); + layout.addView(textIsUseLabel); + layout.addView(textIsUse); + Place place = new Place(); + builder.setTitle("编辑店铺信息") + .setView(scrollView) // 设置 ScrollView 作为对话框的内容视图 + .setPositiveButton("确定", (dialog, which) -> { + // 获取输入框的值并更新 place 对象 + place.setName(textName.getText().toString()); + place.setProvince(textProvince.getText().toString()); + place.setCity(textCity.getText().toString()); + place.setArea(textArea.getText().toString()); + place.setAddress(textAddress.getText().toString()); + place.setX(Double.parseDouble(textX.getText().toString())); + place.setY(Double.parseDouble(textY.getText().toString())); + place.setNum(Integer.parseInt(textNum.getText().toString())); + int num2 = 0; + try { + num2 = Integer.parseInt(textNumJ.getText().toString()); + } catch (NumberFormatException e) { + throw new RuntimeException(e); + } + place.setNumJ(num2); + place.setIsUse(Integer.parseInt(textIsUse.getText().toString())); + // 调用 sendUpdateNum 方法上传更新 + addPlace(place); + }) + .setNegativeButton("取消", null) + .show(); + + } + private void addPlace(Place place) { + String url = "http://mai.godserver.cn:11451/api/mai/v1/place"; + String body = new Gson().toJson(place,Place.class); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), body); + Request request = new Request.Builder() + .url(url) + .put(requestBody) + .build(); + OkHttpClient client = new OkHttpClient(); + client.newCall(request).enqueue(new Callback() { + @Override + public void onFailure(Call call, IOException e) { + e.printStackTrace(); + } + @SuppressLint("NotifyDataSetChanged") + @Override + public void onResponse(Call call, Response response) throws IOException { + if (response.isSuccessful()) { + final String responseData = response.body().string(); + runOnUiThread(() -> { + Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); + }); + }else { + Toast.makeText(MainActivity.this, "添加失败", Toast.LENGTH_SHORT).show(); + } + } + }); + } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml index e87aebf..40b8f3f 100644 --- a/app/src/main/res/menu/main.xml +++ b/app/src/main/res/menu/main.xml @@ -5,6 +5,10 @@ android:title="@string/action_settings" android:orderInCategory="100" app:showAsAction="never"/> + + \ No newline at end of file