在我的数据库中,我有一行存储来自互联网图像的链接。 在下面的代码中,我已经取了名称并为每一行放入一个ListView。 现在KEY_LINK保存图像的链接,如何将此数组转换为位图以及ListView中每个KEY_NAME的更改?
@SuppressWarnings("deprecation")
private void populate(){
Cursor cursor = entry.getAllRows();
String[] from = new String[] {SQLHelper.KEY_NAME, SQLHelper.KEY_LINK};
int[] to = new int[] {R.id.textView1, R.id.textView2};
SimpleCursorAdapter nameAdapter;
nameAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.item_list, cursor, from, to);
ListView mylist = (ListView)findViewById(R.id.listView1);
mylist.setAdapter(nameAdapter);
}
答案 0 :(得分:1)
android无法使用url来设置imageView。
您案件的解决方案是
为每个Url字符串执行此操作 1.向KEY_LINK创建HTTPGET请求,这可能在AsyncTask中 2.获取连接结果。如果您确认它返回图像,只需使用此方法:
public final static Bitmap getImageFromUrl(final String paramURL) throws InterruptedException, ExecutionException {
final ExecutorService exec = Executors.newSingleThreadExecutor();
final Callable<Bitmap> task = new Callable<Bitmap>() {
@Override
public Bitmap call() throws Exception {
{
final URL uurl = new URL(paramURL);
final HttpURLConnection urlConnection = (HttpURLConnection) uurl.openConnection();
final InputStream is = urlConnection.getInputStream();
final BufferedInputStream mBufferedInputStream = new BufferedInputStream(is);
final Bitmap mBitmap = BitmapFactory.decodeStream(mBufferedInputStream);
mBufferedInputStream.close();
return mBitmap;
}
}
};
final Future<Bitmap> result = exec.submit(task);
exec.shutdown();
return result.get();
}
然后您将获得本地的所有图像,因此您可以通知附加到ListView的适配器。
覆盖您的适配器public View getView(int position, View convertView, ViewGroup parent)
,根据位置,还更新您的自定义ListView项(TextView,ImageView)。
有一个关于如何创建自定义ListView的详细指南。
http://www.vogella.com/tutorials/AndroidListView/article.html