java - 根据字符串 ID 求和列值并将结果设置为 TextView
问题描述
这个问题可能会重复出现,但我在发布之前已经寻找了解决方案,但我找不到解决方案。我正在尝试根据用户传递的字符串执行列值的总和,但我认为我在MainActivity.java或DatabaseAccess.java上做错了,因为我的应用程序在传递字符串时崩溃。
这是我的 DatabaseAccess.java 方法:
public String SumMoneyValues (String id){
Cursor cursor = database.rawQuery("SELECT SUM(" + valueColumn + ") as Total FROM " + tableName + " where " + idColumn + " like ?", new String [] { "%" + id + "%" }, null);
String total = "";
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
total = String.valueOf(cursor.getDouble(cursor.getColumnIndex("Total")));
cursor.moveToNext();
}
cursor.close();
return total;
}
我正在使用具有 5 个 TEXT 列和 1 个 DOUBLE 列(valueColumn)的外部数据库。在我的 MainActivity 上,我设置了一个 TextView 并对其进行了初始化。这是我的数据库列:
private static String idColumn = "tag_id";
private static String firstnameColumn = "first_name";
private static String lastnameColumn = "last_name";
private static String phoneColumn = "phone";
private static String addressColumn = "address";
private static String emailColumn = "email";
private static String valueColumn = "valor";
顺便说一句,我的搜索方法运行良好:
public List<Contact> getTagDataById(String id) {
List<Contact> list = new ArrayList<>();
Cursor cursor = database.rawQuery("select * from " + tableName + " where " + idColumn + " like ?", new String[] { "%" + id + "%" });
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
Contact contact = new Contact();
contact.setFirstName(cursor.getString(0));
contact.setLastName(cursor.getString(1));
contact.setPhone(cursor.getString(2));
contact.setEmail(cursor.getString(3));
contact.setTagId(cursor.getString(4));
contact.setValor(cursor.getString(5));
list.add(contact);
cursor.moveToNext();
}
cursor.close();
return list;
}
这是我试图在我的 MainActivity 上实现的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_main);
initData();
initView();
initClick();
// Find the GUI components
this.databaseAccess = DatabaseAccess.getInstance(getApplicationContext());}
private String SumMoneyValues (String str) {
databaseAccess.open();
String soma = databaseAccess.SumMoneyValues(str);
databaseAccess.close();
return soma;
}
private void initView() {
swTotalSum = (TextView)findViewById(R.id.swTotalSum);
initListView();
}
...
String testeSoma = SumMoneyValues(epctag);
if (testeSoma != null){
swTotalSum.setText(testeSoma);
} else{
epcTTS.speak("Something went wrong!", TextToSpeech.QUEUE_FLUSH, null);
}
在我的 MainActivity 上调用SumMoneyValues方法的代码是什么?对不起,这里是新手。
解决方案
推荐阅读
- linux - 非root用户如何在特权端口上运行
- javascript - 如何从 Firestore 中的多层文档中获取字段
- java - 有没有办法指定用于在maven中编译依赖项目的JDK版本?
- powershell - 在文件夹中查找最新文件
- amazon-web-services - 在 AWS 中设置 Datapipeline 流
- javascript - 如何在ejs中设置if else条件
- string - F# 中的表达式“some string”.[3 .. 7] 调用哪个函数?
- c# - 读取从 wcf 收到的原始 Soap 信息
- android - Ionic Cordova 不构建 android
- flutter - Flutter on web:如何获取 Iframe 高度以放入 SingleChildScrollView