gpt4 book ai didi

java - 将外部图像加载到 GridView (无图像)

转载 作者:行者123 更新时间:2023-12-01 15:51:14 26 4
gpt4 key购买 nike

有人能看到我在这里做错了什么吗?我知道这是很多代码,但除了图像没有出现在 ImageView 内之外,我没有收到任何错误。 ImageView 出现但为空。

我猜我在错误的地方运行了 asynctask 或者什么?

代码如下:

MainActivity.java:

package se.bjornange.android.grid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.GridView;

public class mainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
}

}

ImageAdapter.java

package se.bjornange.android.grid;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter implements NetworkCallListener {
private Context mContext;
Bitmap thebmp;
ImageView imageView;

public ImageAdapter(Context c) {
mContext = c;
}

public int getCount() {
return aThumbUrls.length;
}

public Object getItem(int position) {
return null;
}

public long getItemId(int position) {
return 0;
}

public void onNetworkCallComplete(Bitmap bmp) {

thebmp = bmp;

}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {


new NetworkCallTask(this).execute(aThumbUrls[position]);

if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);

} else {

imageView = (ImageView) convertView;
}

imageView.setImageBitmap(thebmp);

return imageView;
}

private String[] aThumbUrls = { "http://www.google.se/images/logo_sm.gif",
"http://www.google.se/images/logo_sm.gif", "http://www.google.se/images/logo_sm.gif"
};

@Override
public void onNetworkCallCancel() {
// TODO Auto-generated method stub

}

}

NetworkCallListener.java

package se.bjornange.android.grid;

import android.graphics.Bitmap;

public interface NetworkCallListener {
public void onNetworkCallComplete(Bitmap bmp);

public void onNetworkCallCancel();

}

NetworkCallTask​​.java

package se.bjornange.android.grid;


import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;

public class NetworkCallTask extends AsyncTask<String, Void, Bitmap> {
NetworkCallListener listener = null;
String url;
public NetworkCallTask(NetworkCallListener listener) {
this.listener = listener;
}


protected void onPreExecute() {

}

protected Bitmap doInBackground(String... params) {

Bitmap bmImg = null;
url = params[0];
URL myFileUrl = null;


try {
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();

bmImg = BitmapFactory.decodeStream(is);

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bmImg;
}

protected void onPostExecute(final Bitmap bmImg) {
//imageView.setImageBitmap(bmImg);

listener.onNetworkCallComplete(bmImg);
}

}

最佳答案

冷藏箱位于链接下方

Lazy load of images in ListView

来源可在此处获取http://open-pim.com/tmp/LazyList.zip

关于java - 将外部图像加载到 GridView (无图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com