我正在使用自定义数组适配器并在每行中显示图像和一些文本(来自电影数据库API的JSON)。当我更改设备的方向时,列表会再次加载,所有内容都会正确显示,即使我没有在代码中的任何位置指定横向方向。到目前为止,太棒了!
我的问题是,在横向中,我想仅更改我正在加载的图片(使用Picasso,因为它是图片网址)。我希望其他一切保持原样。
我怎样才能达到同样的目标?毕加索本身是否有能够解决这个问题的功能?
如果需要一些代码,请告诉我。谢谢!
答案 0 :(得分:1)
您应该检测设备何时更改方向
然后,您应该根据方向和notifyDataSetChanged
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
// change all image path in listdata to landscape path
// for example
// for (Item item : listData) {
// item.setDisplayImagePath(landscapePath);
// }
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
// change all image path in listdata to portrait path
}
youListViewAdapter.notifyDataSetChanged();
}
希望这个帮助
答案 1 :(得分:0)
你可以尝试这段代码:
Display display = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
if (rotation != 0) {
Picasso.with(getApplicationContext()).load(your_url).into(your_imageview);
}
它检测屏幕是否旋转,display.getRotation返回一个int(如果没有任何旋转则等于0),从那里你可以使用Picasso来改变你的imageview。
干杯,