免责声明:我不是要求有人为我做这项工作,只是要求最好的方法来完成这项工作。
我需要为页面上的 12 项列表显示两个数值。页面看起来像这样(仍在处理布局)
我最初是从滚动视图以及每一行的相对布局构建的。我收到来自 Eclipse 的警告,该视图现在有 80 多个视图,并且会导致性能问题,因此我想通过光标适配器和单个列表行布局来执行此操作。
问题是,如果我在包含我想要提取的记录项目的数据库表上使用光标适配器,我只会得到用户已经为列表记录的项目列表。我想知道是否可以显示所有项目(从字符串数组或包含所有移动的另一个数据库表提供),然后从数据库中提取数字。(底部的按钮控制提取数据的距离)
我在想我也许可以使用自定义光标适配器,或者覆盖光标适配器上的绑定,但如果有人知道实现这一点的方法,我全都听好了!
我有一个包含所有动作的表,例如:
ID moveName
----------------
1 Takedown
2 Sweep
3 Reversal
ETC
我希望整个表填充列表视图(所以我得到 12 行)
然后让它从另一个表中提取#:
SELECT COUNT(moves) FROM movesHistory WHERE moveName = <name> AND date = NOW - <button pressed>
这不是正确的 SQL 语法,只是演示了我会使用什么。我将把它包装在一个函数中,这样我就可以通过月份来查找用户何时按下底部的按钮。
我会使用类似的东西:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get a cursor with all people
Cursor c = myDB.rawQuery("SELECT ... FROM " + TableName , null);
startManagingCursor(c);
ListAdapter adapter = new SimpleCursorAdapter(this,
// Use a template that displays a text view
android.R.layout.simple_list_item_1,
// Give the cursor to the list adatper
c,
// Map the NAME column in the people database to...
new String[] {Contacts.DISPLAY_NAME},
// The "text1" view defined in the XML template
new int[] {android.R.id.text1});
setListAdapter(adapter);
}
2012 年 12 月 14 日编辑:
在阅读了另一个 SO 链接之后,这可以通过某种形式的 Join 轻松完成。我现在想弄清楚是否可以从 BJJ 名称表中选择所有记录,然后从另一个表中选择每种移动类型的总和。
是否可以从此表中选择所有行:
然后是该表的移动总数:
做这样的事情:
Name Taps Tapped
Takedown 0 0
sweep 0 0
reversal 1 0
choke 2 1
arm lock 0 0
leg lock 0 1
guard pass 0 0
guard pull 0 1
back 0 0
sweep 1 0
throw 1 0
guard 1 0
如果用户名在“反对”列中,则计为已点击,如果用户名在“按”列中,则移动将计为“点击”我正在阅读有关联接的信息,但嵌套选择,计数等现在让我有点困惑,因为我仅限于基本的选择/插入/更新/命令。
我找到了以下页面:http ://www.w3resource.com/sql/aggregate-functions/sum-and-count-using-variable.php
该列表在连接中使用计数和总和,但是当我尝试以下操作时出现错误:
编辑#3
成功!
这是 SQL 查询:
SELECT taps1.moveName, IFNULL( taps1.taps, 0 ) AS Taps , IFNULL( tapped1.tapped, 0 ) AS Tapped
FROM (
SELECT bj.moveName, bh.taps
FROM BJJ_moves bj
LEFT JOIN (
SELECT Move, SUM( MoveCount ) AS taps
FROM BJJ
WHERE MoveBy = '<NAME>'
GROUP BY Move
)bh ON bh.Move = bj.moveName
)taps1
LEFT JOIN (
SELECT Move, SUM( MoveCount ) AS tapped
FROM BJJ
WHERE AGAINST = '<NAME>'
GROUP BY Move
)tapped1 ON tapped1.Move = taps1.MoveName
这是它生成的结果表(除了我已将其修改为将 NULL 变为 0,并更改列名):
我现在需要将此查询放入游标中,它将提供给列表视图。