-1
- 我在自定義適配器中通過Picasso Library加載圖像,然後將其顯示在我的ListFragment中。當我嘗試滾動時,某些圖像更改順序(我認爲重複使用單元格是錯誤的)。
什麼是異步下載圖像的最佳地點?我使用viewholder在自定義適配器中執行此操作。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; } }
通常,當從Internet上加載東西時,我使用了一個AsyncTask。它可以防止視圖不應該被關注的阻塞和分離任務。見[AsyncTask](http://developer.android.com/reference/android/os/AsyncTask.html) – 2014-09-25 09:53:27
@Remymoan畢加索正在做後臺工作。如上所述,我可以使用AsyncTask製作自己的圖片下載器。但問題是我應該在哪裏放置我的後臺任務? – pardnoj 2014-09-25 12:53:03
你可以把它放在一個單獨的類文件中。我沒有使用Picasa,但我認爲Picasa已經在後臺爲您加載。如果是這樣的話,你應該沒問題。 – 2014-09-25 12:56:26