gpt4 book ai didi

java - 从 listView 获取 textView 值

转载 作者:行者123 更新时间:2023-12-02 06:52:28 25 4
gpt4 key购买 nike

我有一个 listView,它由 sqlite 数据库中的 simpleCursorAdapter 填充。每个 listView 条目都有 3 个 textViews :值、小时和日期。

我按日期值过滤listView光标,因此如果我在过滤器中输入24-07-2013,它只会显示sqlite数据库中具有以下内容的条目:设置为该日期。有时会显示 1 或 3 或任何数字,具体取决于数据库中有多少条目。

我想要做的是将所有Values添加到总数中,并在单独的TextView或其他东西中显示它。

所以我的问题是:如何从 listView 获取 Values 并将它们相加?

这是我的代码,我会尽量不复制它。

private void displayListView() {

Cursor cursor = dbHelper.fetchAllCountries();

// The desired columns to be bound
String[] columns = new String[] {
SQLiteT.DB_COLUMN_1_NAME3,
SQLiteT.DB_COLUMN_2_NAME3,
SQLiteT.DB_COLUMN_3_NAME3,

};

int[] to = new int[] {

R.id.numeprod3,
R.id.cantotala3,
R.id.ultimulpret3,

};

dataAdapter = new SimpleCursorAdapter(this, R.layout.country_info3,
cursor, columns, to, 0);


ListView listView = (ListView) findViewById(R.id.listView13);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);

myFilter = (EditText) findViewById(R.id.myFilter3);
myFilter.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}

public void onTextChanged(CharSequence s, int start, int before,
int count) {
dataAdapter.getFilter().filter(s.toString());
}
});

dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return dbHelper.fetchCountriesByName(constraint.toString());

这就是我从数据库中提取数据的方法:

 public Cursor fetchCountriesByName(String inputText) throws SQLException {
Cursor mCursor = null;
if (inputText == null || inputText.length() == 0) {
mCursor = this.sqliteDBInstance3.query(DB_TABLE_NAME3, new String[] {KEY_ROWID,
DB_COLUMN_1_NAME3, DB_COLUMN_2_NAME3, DB_COLUMN_3_NAME3
}, null, null, null, null, null);

} else {
mCursor = this.sqliteDBInstance3.query(true, DB_TABLE_NAME3,
new String[] {KEY_ROWID, DB_COLUMN_1_NAME3,
DB_COLUMN_2_NAME3, DB_COLUMN_3_NAME3 },
DB_COLUMN_3_NAME3 + " like '%" + inputText + "%'", null,
null, null, null, null);
}
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;

}

public Cursor fetchAllCountries() {

Cursor mCursor = this.sqliteDBInstance3.query(DB_TABLE_NAME3,
new String[] {KEY_ROWID, DB_COLUMN_1_NAME3, DB_COLUMN_2_NAME3,
DB_COLUMN_3_NAME3 }, null, null, null, null,
null);

if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}

更新:

我最终这样做了。这不是我认为最好的解决方案,但它完成了工作。

//Added to this :
public void onTextChanged(CharSequence s, int start, int before,
int count) {
dataAdapter.getFilter().filter(s.toString());
totaluri= dbHelper.getAllCountries(s.toString());
//ore=dbHelper.getAllCountries2(s.toString());
int pff=totaluri.length;
float totalulma = 0;
for(int i=0;i<pff;i++){totalulma=totalulma+Float.parseFloat(totaluri[i]);}
totaltotaluri.setText(String.format("Total: %.2f", totalulma));

//And created this method inside my database activity
public String[] getAllCountries(String inputText) {
Cursor cursor = this.sqliteDBInstance3.query(DB_TABLE_NAME3,
new String[] { DB_COLUMN_1_NAME3 }, DB_COLUMN_3_NAME3 + " like '%" + inputText + "%'", null, null, null,
null);

if (cursor.getCount() > 0) {
String[] str = new String[cursor.getCount()];
int i = 0;

while (cursor.moveToNext()) {
str[i] = cursor.getString(cursor
.getColumnIndex(DB_COLUMN_1_NAME3));
i++;
}
return str;
} else {
return new String[] {};
}
}

因此,当过滤器 edittext 中的输入发生更改时,它会在数据库中运行另一个查询。如果有更好、更有效的方法来执行此操作,请告诉我...我真的很想学习,当然,我不想让我的应用使用太多资源。

最佳答案

正如我的评论所建议的,您可以在从查询中获取光标后循环遍历光标,这样您的适配器就不必这样做。

public Cursor fetchAllCountries() {
Cursor mCursor = this.sqliteDBInstance3.query(DB_TABLE_NAME3,
new String[] {KEY_ROWID, DB_COLUMN_1_NAME3, DB_COLUMN_2_NAME3,
DB_COLUMN_3_NAME3 }, null, null, null, null,
null);

if (mCursor != null) {
updateSum(mCursor);
}
return mCursor;
}

private void updateSum(Cursor cursor) {
int sum = 0;
final int index = cursor.getColumnIndex(COLUMN_NAME);
for (cursor.moveToFirst; !cursor.isAfterLast(); cursor.moveToNext()) {
int value = cursor.getInt(index);
sum += value;
}
// do something with sum
}

关于java - 从 listView 获取 textView 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com