我有一个由Fragment
和ListView
组成的TextView
。 ListView包含多个TextView
,其中包含通过自定义SimpleCursorAdapter
和CursorLoader
从数据库加载的数值。所以这些值在显示后是静态的。我想对值进行求和,并在单独的TextView中直接显示总数。
我该怎么做?我的意思是从用户的角度来看,列表和总数必须同时显示。我可以使用额外的加载器来单独获取总数,但我想避免这种情况。那么我应该在哪个点上加上求和逻辑?
我有这样的查询,其中每行将填充listView的项目:
SELECT group_name, group_amount FROM notes;
我不想执行如下单独的查询来计算总金额,我希望尽可能安全地从GUI中获取
SELECT sum(group_amount) FROM notes;
这是我的代码:
FRAGMENT onCreateView
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.monthly_report, container, false);
ListView listCosts = (ListView)rootView.findViewById(R.id.list_costs);
costsAdapter = new VehReportAdapter(getActivity(),
com.vortexalex.vehnotes.R.layout.monthly_report_single_item, null,
VehReportAdapter.fromColumns, toViews, 0);
listCosts.setAdapter(costsAdapter);
}
FRAMENT onActivityCreated
public void onActivityCreated(Bundle savedInstanceState) {
getLoaderManager().initLoader(VehTabsUtil.REPORT_COSTS_LOADER_ID, null, (LoaderCallbacks<Cursor>) this);
}
FRAGMENT onLoaderFinished
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
costsAdapter.swapCursor(cursor);
}
ADAPTER bindView(适配器extends SimpleCursorAdapter
)
public void bindView(View view, Context context, Cursor cursor) {
Integer dbAmount = cursor.getInt(cursor.getColumnIndex(AccountingContract.Report.COLUMN_NAME_GROUP_AMOUNT));
String amount = NumberUtil.formatAmount(dbAmount);
((TextView) view.findViewById(com.vortexalex.vehnotes.R.id.report_item_amount)).setText(amount);
}
FRAGMENT LAYOUT montly_report.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="vertical"
android:padding="6dip" >
<ListView android:id="@+id/list_costs"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="2"
android:drawSelectorOnTop="false"/>
<TextView
android:id="@+id/costs_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:padding="6dip"
/>
</LinearLayout>
答案 0 :(得分:0)
如果我理解正确,您的列表视图中有数字,并且您想要列表视图中每个值的总和。
要在列表视图中的每个值上实现此循环,请使用String
将值从int
转换为Integer.parseInt(String str)
,将它们全部添加并转换生成的int
使用String
返回Integer.toString(int i)
,并使用String
在文本视图中插入结果yourTextView.setText(resultString)
。