そのため、今のところParseを使用してアプリのバックエンドを実行しています。Parseデータベースにクエリを実行すると、データは一見奇妙な方法で返されます(私にとっては、これは初めてです)-
query.getFirstInBackground(new GetCallback() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
} else {
}
}
});
また、クエリのデータは、たとえばElseステートメント内で利用できます。Date time = object.getCreatedAt();を実行できます。取得したオブジェクトが作成された時刻を取得します。
しかし、そのデータを使用してアプリ内のtextViewのテキストを更新したいので、問題が発生します。データがcallBack内に「スタック」しているように感じます(これはおそらく正しくないことに気づきます。これを実行しようとすると、エラーが発生します:「定義された内部クラス内の非最終変数updateTextを参照できません別の方法で」。エラーはupdateText、timeText、table、およびiにあります。失敗している関連するコードスニペットは次のとおりです-
TableLayout table = (TableLayout) findViewById(R.id.tableLayout);
TextView courtText;
TextView updateText;
TextView timeText;
// For each row
for (int i = 0; i < table.getChildCount(); i++) {
// Get the one `courtText` in this row
courtText = (TextView) table.getChildAt(i).findViewById(R.id.courtText);
ParseQuery query = new ParseQuery("Updates");
query.whereEqualTo("court",courtText);
query.orderByAscending("createdAt");
query.getFirstInBackground(new GetCallback() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("update", "The getFirst request failed.");
} else {
Log.d("update", "Retrieved the object.");
String update = object.getString("update");
Date time = object.getCreatedAt();
updateText = (TextView) table.getChildAt(i).findViewById(R.id.updateText);
timeText = (TextView) table.getChildAt(i).findViewById(R.id.timeText);
updateText.setText(update);
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
timeText.setText(dateFormat.format(time));
}
}
});
}
どんな助けでもいただければ幸いです。