您的位置:首页 > 理论基础 > 计算机网络

记一个viewpager,用到网络取数据,回调,设置滑动

2016-10-16 16:04 357 查看
fragment中

public class Fragment1 extends Fragment {
private String imgage="http://192.168.11.57/my/cookbook_hongshairou.bmp";
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_layout, null);

final ImageView img=(ImageView) view.findViewById(R.id.img);

//回调,设置图片

NetImageUtil.getImage(imgage, new ImageTool() {

@Override
public void setImage(Bitmap bmp) {
img.setImageBitmap(bmp);

}
});

return view;
}

}

自定义工具中

public class NetImageUtil {

public interface ImageTool{
void setImage(Bitmap bmp);
}

public ImageTool tool;

//传入图片路径和接口
public static void getImage(final String path,final ImageTool tool){

final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
Bitmap bmp=(Bitmap) msg.obj;
//接口中的函数,回调操作
tool.setImage(bmp);

}
};

//线程里
new Thread(new Runnable() {

@Override
public void run() {
//网络获取数据
try {
HttpClient http=new DefaultHttpClient();
HttpPost request=new HttpPost(path);
HttpResponse resp=http.execute(request);
byte[] data=EntityUtils.toByteArray(resp.getEntity());
Bitmap bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
Message msg=handler.obtainMessage();

//将内容放到msg中发送
msg.obj=bitmap;
handler.sendMessage(msg);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}).start();

}

}

mainactivity中

public class MainActivity extends FragmentActivity {
private ViewPager pager;
public static String[] imgPath={"http://192.168.11.57/my/cookbook_hongshairou.bmp",
"http://192.168.11.57/my/cookboook_malexiangguo.bmp",
"http://192.168.11.57/my/touxiang.png",
"http://192.168.11.57/my/wo-de.png"};

private List<Fragment> list=new ArrayList<Fragment>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

pager=(ViewPager) findViewById(R.id.pager);

list.add(new Fragment1());
list.add(new Fragment2());
list.add(new Fragment3());
list.add(new Fragment4());
pager.setAdapter(new MyAdapter(getSupportFragmentManager()));

}

//这里用fragmentstatepageradapter,销毁后数据不会储存在内存中,可以加载很多
class MyAdapter extends FragmentStatePagerAdapter{

public MyAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐