ダイアログボックスにユーザーの支払い履歴を入力するために、次のカーソルを設定しました
Cursor PaymentsCursor = db.getReadableDatabase().rawQuery(
"SELECT _id, Date, Payment FROM tblPaymentHistory WHERE DebtName = '"
+ debtname + "'" + "ORDER BY _id ASC", null);
SimpleCursorAdapter HistoryAdapter = new SimpleCursorAdapter(this,
R.layout.paymenthistoryrow, PaymentsCursor, from, to);
問題は、複数の種類の債務があり、各債務に対して順不同で支払いが行われた場合、支払い履歴が結果を返すときに、順不同の行番号、たとえば 1,2 として返されることです。 、6、7、9、12など。データベースから_id(一意のキー)を取得していることは知っていますが、クエリの行番号を再ベースまたは変更して、各結果が「1、2、3、4、5など」として返されるようにする方法はありますか「元のIDに関係なく?
ORDER BY _id または ORDER BY Date ASC でさえこれを修正すると思っていましたが、そうではありませんでした。
データベース内の私の行は次のようになります。
1、テスト、2012 年 4 月 13 日、250
2、テスト、2012 年 4 月 13 日、300
3、テスト、2012 年 4 月 14 日、222
4、テスト 2、2012 年 4 月 14 日、500
5、テスト、4/ 2012 年 15 月、600
ユーザーが「TEST」の履歴をクリックすると、1,2,3,5... として返され、「TEST2」の履歴をプルすると「4」と表示されるので、取得しようとしています。 TEST は「1,2,3,4」を示し、TEST2 は「1」を示します。
いまいましい私は自分の答えに答えることができませんが、これが私がやったことです:
みんなありがとう。SqLite dbに触れる必要がないように、ビューを変更する代替オプションを見つけました。私が見つけたリンクはheres SimpleCursorAdapterのデータを変更する
結果は次のとおりです。
PaymentsCursor = db.getReadableDatabase().rawQuery(
" SELECT _id, Date, Payment FROM tblPaymentHistory WHERE DebtName = '"
+ debtname + "'" + "ORDER BY _id ASC", null);
String[] from = new String[] { DbAdapter.KEY_HISTORY_ID,
DbAdapter.HISTORY_DATE, DbAdapter.HISTORY_PAYMENT };
int[] to = new int[] { R.id.PAYMENTNO, R.id.PAYMENTDATE,
R.id.PAYMENTAMOUNT };
SimpleCursorAdapter HistoryAdapter = new SimpleCursorAdapter(this,
R.layout.paymenthistoryrow, PaymentsCursor, from, to);
HistoryAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int column) {
if (column == 0) { // let's suppose that the column 0 is the
// date
TextView tv = (TextView) view;
String rownum = String.valueOf(cursor.getPosition() + 1);
// here you use SimpleDateFormat to bla blah blah
tv.setText(rownum);
return true;
}
return false;
}
});
paymenthistory.setAdapter(HistoryAdapter);
これは最も魅力的な方法ではないかもしれませんが、ウィンドウに履歴が表示されるたびに、行番号 (プラス 1) を使用して # を示しています。皆さんありがとう!