Я пытаюсь создать приложение, которое захватывает все ParseFiles в ParseObject и отображает их в GridView, последовательно.Загрузка изображений с помощью Parse в GridView
Я сделал это с одним действием, которое представляет собой ленту новостей, и все работает нормально.
Но когда я пытаюсь реализовать тот же метод в своей другой деятельности, он не работает.
Я использую AsyncTask для загрузки изображений в фоновом режиме.
Это мой код:
ThumbnailItems.java (POJO класс)
public class ThumbnailItems {
Bitmap thumb;
// Empty constructor.
public ThumbnailItems(){
}
// Constructor.
public ThumbnailItems(Bitmap thumb){
super();
this.thumb = thumb;
}
// Getter.
public Bitmap getImage(){
return thumb;
}
// Setter.
public void setImage(Bitmap thumb){
this.thumb = thumb;
}
}
Мой AsyncTask:
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
thumbItemsList = new ArrayList<ThumbnailItems>();
try {
ParseQuery<ParseObject> postQuery = new ParseQuery<ParseObject>("Posts");
postQuery.orderByDescending("createdAt");
objectList = postQuery.find();
for (ParseObject posts : objectList){
final ThumbnailItems thumbItems = new ThumbnailItems();
// Locate user profile picture.
ParseFile thumbFile = (ParseFile) posts.get("author_img");
thumbFile.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] bytes, ParseException e) {
if (e == null) {
Bitmap userImage = Bitmap.createScaledBitmap(
BitmapFactory.decodeByteArray(bytes, 0, bytes.length)
, 150, 150, false);
thumbItems.setImage(userImage);
} else {
Log.d("ParseException", "Error: " + e.getMessage());
e.printStackTrace();
}
}
});
thumbItemsList.add(thumbItems);
}
} catch (ParseException e){
Log.e("ParseException", "Error: " + e.getMessage() + " with code: " + e.getCode());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View activityView = layoutInflater.inflate(R.layout.activity_profile, null, false);
gridView = (GridView) activityView.findViewById(R.id.gridView);
gridViewAdapter = new GridViewAdapter(getApplicationContext()
, R.layout.profile_viewpager_tab1_children
, thumbItemsList);
gridView.setAdapter(gridViewAdapter);
}
}
(я уже видел this учебник, но я действительно хочу быть в соответствии с моим кодом)
Большое спасибо, брат. Я реализовал это, и он работал как шарм! – user5460905
Это плохое решение. Это приведет к тому, что адаптер вызовет этот фоновый метод каждый раз, когда пользователь прокрутит, что приведет к задержке в производительности. Вероятно, вы испытаете, что ваш вид перекоса не является гладким. –