-1
- Загружайте изображения через библиотеку Picasso в свой пользовательский адаптер, а затем показывайте их в своем списке. Когда я пытаюсь прокручивать, некоторые из изображений меняют порядок (я думаю, что это неправильно с повторным использованием ячеек).
Какое место лучше всего загружать асинхронно? Я делаю это в своем пользовательском адаптере с помощью зрителя.listview изменения порядка
public class PostsAdapter extends BaseAdapter { private static final String TAG = "tag.example.tag"; private static final String URL_PREFIX = "http://someapi.com/v1/api/"; private Context mContext; private ArrayList<Post> mData; private static LayoutInflater inflater = null; public PostsAdapter(Context context, ArrayList<Post> data) { mContext = context; mData = data; inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) } @Override public boolean isEnabled(int position) { return true; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int i) { return i; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { View v = view; ViewHolder holder = null; if(view == null) v = inflater.inflate(R.layout.post_listviewrow, null); holder = new ViewHolder(); holder.imageView = (ImageView) v.findViewById(R.id.imageView); Post post = (Post) mData.get(i); // Download image with Picasso holder.imageView.setTag(post.getPictureUrl()); Picasso.with(mContext).load(URL_PREFIX + post.getPictureUrl()).into(holder.imageView); return v; } static class ViewHolder { TextView titleTextView; ImageView imageView; } }
Обычно, когда дело доходит до загрузки вещей из Интернета, я использую AsyncTask. Он предотвращает блокировку и разделяет задачи, которые не следует рассматривать в представлении. См. [AsyncTask] (http://developer.android.com/reference/android/os/AsyncTask.html) –
@ Ремимоан Пикассо выполняет фоновое задание. Я могу сделать свой собственный загрузчик изображений с помощью AsyncTask, как вы упомянули выше. Но вопрос в том, где я должен поставить свои фоновые задачи? – pardnoj
Вы можете просто поместить его в отдельный файл класса. Я не работал с Picasa, но я предполагаю, что Picasa уже загружает его в фоновом режиме для вас. Если это так, вы должны быть в порядке. –