Значения столбца SUMming на основе идентификатора строки и установки результата в TextView - PullRequest
1 голос
/ 07 октября 2019

Вопрос, возможно, повторяется, но я искал решение, прежде чем опубликовать его, и не смог найти решение. Я пытаюсь выполнить СУММУ значений столбцов на основе строки, переданной пользователем, но я думаю, что я делаю это неправильно на моем 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);
    }

Какой код используется для вызова метода SumMoneyValues ​​ в моей функции MainActivity? Извините, новичок здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...