核心功能增强 - 数据和工具类修改

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
wchino
2026-04-05 22:28:38 +08:00
parent a61f468fcf
commit 23e372ae93
6 changed files with 269 additions and 93 deletions

View File

@@ -6,17 +6,22 @@ import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import com.miraclegarden.smsmessage.databinding.DialogActionConfirmBinding;
import com.miraclegarden.smsmessage.model.ApiError;
import com.miraclegarden.smsmessage.model.BankInfo;
import com.miraclegarden.smsmessage.network.ApiService;
import java.util.ArrayList;
import java.util.List;
/**
* 通用弹窗
* 选择银行账户弹窗(添加监听时使用)
*/
public class ActionConfirmDialog extends Dialog {
private final Context context;
@@ -24,65 +29,61 @@ public class ActionConfirmDialog extends Dialog {
AppInfo appInfo;
int index;
DialogActionConfirmBinding actionConfirmBinding;
ApiService apiService;
List<BankInfo> bankList = new ArrayList<>();
BankInfo selectedBank = null;
public interface OnToActionListener {
void toSumbit(AppInfo appInfo);
void toCancel();
}
public void setOnToActionListener(OnToActionListener onNextCallListener) {
this.onToActionListener = onNextCallListener;
}
public ActionConfirmDialog(Context context, AppInfo appInfo) {
super(context, R.style.MaterialDesignDialog);
this.context = context;
this.appInfo = appInfo;
this.apiService = new ApiService(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionConfirmBinding = DialogActionConfirmBinding.inflate(getLayoutInflater());
setContentView(actionConfirmBinding.getRoot());
actionConfirmBinding.ivIcon.setImageDrawable(appInfo.getIcon());
actionConfirmBinding.tvAppname.setText(appInfo.getAppName());
actionConfirmBinding.tvPackage.setText(appInfo.getPackageName());
if(!TextUtils.isEmpty(appInfo.getName())){
actionConfirmBinding.tvName.setText(appInfo.getName());
}
if(!TextUtils.isEmpty(appInfo.getCode())){
actionConfirmBinding.tvCode.setText(appInfo.getCode());
}
if(!TextUtils.isEmpty(appInfo.getRemark())){
actionConfirmBinding.tvRemark.setText(appInfo.getRemark());
}
actionConfirmBinding.sumbitTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(TextUtils.isEmpty(actionConfirmBinding.tvName.getText().toString().trim())){
Toast.makeText(context,"名称不能为空",Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(actionConfirmBinding.tvCode.getText().toString().trim())){
Toast.makeText(context,"Code不能为空",Toast.LENGTH_SHORT).show();
return;
}
appInfo.setName(actionConfirmBinding.tvName.getText().toString().trim());
appInfo.setCode(actionConfirmBinding.tvCode.getText().toString().trim());
appInfo.setRemark(actionConfirmBinding.tvRemark.getText().toString().trim());
if(onToActionListener!=null){
dismiss();
onToActionListener.toSumbit(appInfo);
}
// 加载银行账户列表
loadBankList();
actionConfirmBinding.sumbitTv.setOnClickListener(view -> {
if (selectedBank == null) {
Toast.makeText(context, "请选择关联的银行账户", Toast.LENGTH_SHORT).show();
return;
}
appInfo.setBankInfoId(selectedBank.getId());
appInfo.setName(selectedBank.getBankName());
appInfo.setCode(selectedBank.getAccount());
if (selectedBank.getRemark() != null) {
appInfo.setRemark(selectedBank.getRemark());
}
if (onToActionListener != null) {
dismiss();
onToActionListener.toSumbit(appInfo);
}
});
actionConfirmBinding.cancelTv.setOnClickListener(view -> {
dismiss();
if(onToActionListener!=null){
if (onToActionListener != null) {
onToActionListener.toCancel();
}
});
@@ -92,8 +93,83 @@ public class ActionConfirmDialog extends Dialog {
wlp.gravity = Gravity.CENTER;
wlp.width = WindowManager.LayoutParams.WRAP_CONTENT;
wlp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(wlp);
}
private void loadBankList() {
actionConfirmBinding.spinnerBank.setEnabled(false);
apiService.getBankList(new ApiService.ApiCallback<List<BankInfo>>() {
@Override
public void onSuccess(List<BankInfo> result) {
if (context instanceof android.app.Activity) {
((android.app.Activity) context).runOnUiThread(() -> {
bankList.clear();
if (result != null) {
bankList.addAll(result);
}
if (bankList.isEmpty()) {
Toast.makeText(context, "暂无银行账户,请先到银行账户管理添加", Toast.LENGTH_LONG).show();
dismiss();
return;
}
setupSpinner();
});
}
}
@Override
public void onError(ApiError error) {
if (context instanceof android.app.Activity) {
((android.app.Activity) context).runOnUiThread(() -> {
Toast.makeText(context, "加载银行账户失败: " + error.getMessage(), Toast.LENGTH_LONG).show();
dismiss();
});
}
}
});
}
private void setupSpinner() {
List<String> bankNames = new ArrayList<>();
bankNames.add("请选择银行账户");
for (BankInfo bank : bankList) {
bankNames.add(bank.getDisplayName());
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(context,
android.R.layout.simple_spinner_item, bankNames);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
actionConfirmBinding.spinnerBank.setAdapter(adapter);
actionConfirmBinding.spinnerBank.setEnabled(true);
actionConfirmBinding.spinnerBank.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (position > 0) {
selectedBank = bankList.get(position - 1);
} else {
selectedBank = null;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
selectedBank = null;
}
});
// 如果已有绑定的银行,选中它
if (!TextUtils.isEmpty(appInfo.getBankInfoId())) {
for (int i = 0; i < bankList.size(); i++) {
if (appInfo.getBankInfoId().equals(bankList.get(i).getId())) {
actionConfirmBinding.spinnerBank.setSelection(i + 1);
selectedBank = bankList.get(i);
break;
}
}
}
}
}