Java 将listview项目背景图像设置为可从web下载的drawable
我正在从web下载一个图像,并试图将其设置为ListView适配器中膨胀列表元素的背景。这是我的方法(来自扩展类Java 将listview项目背景图像设置为可从web下载的drawable,java,android,listview,Java,Android,Listview,我正在从web下载一个图像,并试图将其设置为ListView适配器中膨胀列表元素的背景。这是我的方法(来自扩展类BaseAdapter: @Override public View getView(int i, View view, ViewGroup viewGroup) { //working with an object called "hl" if (view == null){ view = myInflater.inflate(R.layout.lis
BaseAdapter
:
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//working with an object called "hl"
if (view == null){
view = myInflater.inflate(R.layout.list_element, null);
}
Bitmap background = hl.getBgImage();
Drawable dr = new BitmapDrawable(background);
RelativeLayout rl = (RelativeLayout) view.findViewById(R.layout.headline_list);
rl.setBackgroundDrawable(dr);
return view;
}
但是,我在rl.setBackgroundDrawable(dr);
行上得到一个NullPointerException。我添加图像的方式有问题吗?我获取位图的方法如下,堆栈跟踪从未调用,因此我假设它正在正确下载
private static Bitmap getBitmapFromURL(String imageUrl) {
try {
URL url = new URL(imageUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
谢谢你的建议
编辑:我正在调用getBitmapFromUrl(String imageURL)
String image = "http://www.google.com/trends/resources/2327917647-google-icon.png";
Bitmap bg = getBitmapFromURL(image);
Object hl = new Object(title, bg);
objectList.add(hl);
发现问题。应该完全忽略相对值
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
//working with an object called "hl"
if (view == null){
view = myInflater.inflate(R.layout.headline_list, null);
}
Bitmap background = hl.getBgImage();
Drawable dr = new BitmapDrawable(background);
view.setBackgroundDrawable(dr);
return view;
}
正如我所知,代码行“rl.setBackgroundDrawable(dr);”永远不会抛出NullPointerException,除非rl为null,即使dr为null。因此,请更新您的xml文件R.layout.list_元素,让我们一起查找问题。
祝你好运!在你使用GetBitMapFromUrl的地方发布代码只是尝试将它放在一个imageview中,它工作了,所以问题不在于获取图像。它必须在适配器内。你能在发布以下代码的地方发布整个类吗?找到id为
headline\u list
的布局项是个问题吗?我解决了。不,是问题在于下一行,实际上是在相对布局上设置背景。我应该在视图上设置背景。我已经添加了解决方案作为答案。获取图像后,必须将位图图像保存到一个位置,以便下次加载(滚动后)。