String数组从数据库到Bitmap

时间:2015-01-13 02:51:19

标签: android sql bitmap

在我的数据库中,我有一行存储来自互联网图像的链接。 在下面的代码中,我已经取了名称并为每一行放入一个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);



    }

1 个答案:

答案 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