我正在使用解析服務器的項目。它像tinder一樣工作,並允許用戶下載並顯示附近其他用戶的名稱和圖像。從解析下載圖像
它的工作原理,接受一個錯誤,其中名稱和圖像在應用程序中顯示時不正確匹配。
該應用程序最初下載並創建一個本地用戶數組,並且這工作正常。
然後我用下面的代碼下載自己的形象:
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereWithinKilometers("location", parseCustLocation, searchRadius);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(final List<ParseUser> objects, ParseException e) {
if (e==null){
Log.d("state", "215 query successful");
if (objects.size()>0) {
for (final ParseUser user : objects){
Log.d("state", "231"+user.getUsername());
//TextView text = (TextView) findViewById(R.id.Name);
Users.add(user);
sUsers.add((String) user.get("Name"));
locations.add((ParseGeoPoint) user.get("location"));
parseFiles.add((ParseFile) user.get("image"));
}
for (ParseFile file : parseFiles) {
file.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
if (e==null){
Log.d("state", "174 we've got data");
Bitmap bmp = BitmapFactory.decodeByteArray(data,0,data.length);
bitmaps.add(bmp);
if (sUsers.size()==bitmaps.size()){
swipeAdapter.updateData(sUsers,bitmaps);
}
}
}
});}
至於我可以告訴大家,我認爲這個問題是與線
Bitmap bmp = BitmapFactory.decodeByteArray(data,0,data.length);
bitmaps.add(bmp);
,例如,當我運行調試器我有兩個陣列如下(位圖工廠似乎把位圖的任何部分位圖[]):
sUsers[0] = "Billy",
sUsers[1] = "Sarah",
sUsers[2] = "Jim",
bitmaps[0] = Sarahs image,
bitmaps[1] = Jims image,
bitmaps[2] = Billys image
當我顯然需要
bitmaps[0] = Billys image,
bitmaps[1] = Sarahs image,
bitmaps[2] = Jims image,
注: 位圖似乎是正確的順序,如果我跑通過使用調試器一步一步的應用程序。