免責事項: 誰かに作業を依頼しているわけではありません。これを達成するための最善の方法を求めているだけです。
ページ上の 12 項目のリストに対して 2 つの数値を提示する必要があります。ページは次のようになります (レイアウトはまだ作業中です)
私はもともとこれをスクロールビューと各行の相対的なレイアウトから構築しました。ビューに 80 を超えるビューがあり、パフォーマンスの問題が発生するという Eclipse からの警告が表示されるので、カーソル アダプターと単一のリスト行レイアウトからこれを実行したいと考えています。
問題は、プルしたい記録されたアイテムを含むデータベース テーブルでカーソル アダプターを使用すると、ユーザーが既にリストに記録したアイテムのリストしか取得できないことです。すべての項目を表示して (文字列配列、またはすべての動きを含む別のデータベース テーブルから提供される)、データベースから数値を引き出すことができるかどうか疑問に思っています。(下部のボタンは、データをどこから取得するかを制御します)
カスタム カーソル アダプターを使用したり、カーソル アダプターのバインディングをオーバーライドしたりできるのではないかと考えていましたが、これを実現する方法を知っている人がいれば、私は耳を傾けます。
次のようなすべての動きを含むテーブルがあります。
ID moveName
----------------
1 Takedown
2 Sweep
3 Reversal
等
このテーブル全体がリストビューに入力されるようにします (したがって、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);
}
編集 12/14/12:
別のSOリンクを読んだ後、これはある種の結合で簡単に達成できるかもしれません。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
ユーザー名が [Against] 列にある場合、タップされたとカウントされます。ユーザー名が [By] 列にある場合、移動は [タップ] としてカウントされます。などは、ほとんど基本的な Select/Insert/Update/ コマンドに限定されているため、現在は少し混乱しています。
次のページを見つけました: http://www.w3resource.com/sql/aggregate-functions/sum-and-count-using-variable.php
結合で count と sum を使用してリストされていますが、次のことを試みるとエラーが発生します。
編集#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 に変更し、列名を変更したことを除いて):
このクエリをカーソルに入れる必要があるだけで、リストビューにフィードされます。