android view 加载顺序,viewpager加载网络图片显示顺序错误

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

通过okhttpclient3下载多种网络图片后,写入viewpager imageview中后,显示顺序不对。

public Object instantiateItem(@NonNull ViewGroup container, final int position) {

imageView = new ImageView(context);

imageView.setScaleType(ImageView.ScaleType.FIT_XY);

container.addView(imageView);

NewsCenterDetailBean.DataEntity.TopNewsEntity topNewsEntity = topnews.get(position);

String imageurl = Constants.BASE_URL + topNewsEntity.getTopimage();

request = new Request.Builder().url(imageurl).build();

call = client.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

}

@Override

public void onResponse(Call call, Response response) throws IOException {

byte[] picture = response.body().bytes();

Bitmap map = BitmapFactory.decodeByteArray(picture,0,picture.length);

Message msg = new Message();

msg.what = 0;

msg.obj = map;

handler.sendMessage(msg);

}

});

return imageView;

}

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

switch (msg.what) {

case 0:

topnewsBitmap = (Bitmap) msg.obj;

imageView.setImageBitmap(topnewsBitmap);

break

default:

break;

}

}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,ViewPager可以通过PagerAdapter来动态加载ViewPagerAdapter是一个抽象类,需要实现以下方法: 1. getCount():返回ViewPager中的View数量。 2. instantiateItem():创建并返回指定位置的View。 3. destroyItem():销毁指定位置的View。 具体实现步骤如下: 1. 创建一个继承自PagerAdapter的类,实现上述三个方法。 2. 在instantiateItem()方法中,根据指定位置创建View,并将其添加到ViewPager中。 3. 在destroyItem()方法中,将指定位置的ViewViewPager中移除。 4. 在使用ViewPager时,将PagerAdapter的实例设置给ViewPager。 示例代码如下: ``` public class MyPagerAdapter extends PagerAdapter { private List<View> mViewList; public MyPagerAdapter(List<View> viewList) { mViewList = viewList; } @Override public int getCount() { return mViewList.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { View view = mViewList.get(position); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = mViewList.get(position); container.removeView(view); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } } ``` 使用时,可以先创建一个List<View>,然后将需要显示View添加到List中,并将List传入MyPagerAdapter的构造函数。最后将MyPagerAdapter的实例设置给ViewPager即可。 ``` List<View> viewList = new ArrayList<>(); viewList.add(view1); viewList.add(view2); viewList.add(view3); MyPagerAdapter adapter = new MyPagerAdapter(viewList); viewPager.setAdapter(adapter); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值