ここで誰かが、HashMapをJSON配列に変換してアダプタで使用する方法を知っているかどうか尋ねます。ロジックは、ログインしたときに、Volleyを使用してWebサーバー上のデータをフェッチし、SQLiteデータベースに格納し、同時に、リストアデータをカスタムリストビューに表示します。問題は、アプリケーション上の別の部分に移動して戻ってくると、時間がかかるボレーを再度要求することです。私が望むのは、SQLiteデータベースに保存されているデータが取得され、SwipeRefreshを使用してデータを更新したい場合は、新しいデータを更新する時間です。Hashmap to JSON Array
ここに私のコードです。
public void LoadMarkets()
{
Map<String,String>tmpRate = new HashMap<String,String>();
RateDb db = new RateDb(getActivity().getApplicationContext());
Cursor rs = db.getData();
if(rs!=null && rs.getCount()>0)
{
if(rs.moveToFirst())
{
while(rs.moveToNext())
{
tmpRate.put("rateID",rs.getString(rs.getColumnIndex(RateDb.rateID)));
tmpRate.put("Name",rs.getString(rs.getColumnIndex(RateDb.rateName)));
tmpRate.put("Rate",rs.getString(rs.getColumnIndex(RateDb.rateRate)));
tmpRate.put("Date",rs.getString(rs.getColumnIndex(RateDb.rateDate)));
tmpRate.put("Time",rs.getString(rs.getColumnIndex(RateDb.rateTime)));
tmpRate.put("Ask",rs.getString(rs.getColumnIndex(RateDb.rateAsk)));
tmpRate.put("Bid",rs.getString(rs.getColumnIndex(RateDb.rateBid)));
tmpRate.put("Balance",rs.getString(rs.getColumnIndex(RateDb.rateBalance)));
//Log.d("MyDebug",rs.getString(rs.getColumnIndex(RateDb.rateName)));
}
}
}
rs.close();
db.close();
JSONObject jsonObject = new JSONObject(tmpRate);
JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);
RowAAdapter rowAAdapter = new RowAAdapter(getActivity(),jsonArray);
lvMarkets.setAdapter(rowAAdapter);
swipeRefreshLayout.setRefreshing(false);
}
この機能をロードすると、最後のデータのみが表示されるという問題があります。
私の問題を助けてくれることを願っています。
ありがとうございました。
なぜハッシュマップを使用しているのですか?ハッシュマップを入れているように、値をjsonObjectに直接入れることができます –
?それはまったく同じだと思うし、アダプタがJSONArrayとして設定されているのでjsonarrayにしたかった – Raven
答えを確認する –