2

私はAndroidアプリケーションに取り組んでいます。私のアプリでは、アダプターを使用する必要があります。だから私は簡単なアダプターを使いました。

int[] flags = new int[]{
            R.drawable.img1,
            R.drawable.img2,

};

List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
 for(int i=0;i<number.size();i++){
         HashMap<String, String> hm = new HashMap<String,String>();
     hm.put("txt", number.get(i));
     hm.put("flag", Integer.toString(flags[i]) );
     aList.add(hm);
 }

String[] from = { "flag","txt"};

    // Ids of views in listview_layout
    int[] send = { R.id.flag,R.id.txt};

    // Instantiating an adapter to store each items
    // R.layout.listview_layout defines the layout of each item
    SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), aList, R.layout.autocomplete_layout, from, send);

今、リソースからドローアブルではなく、独自のドローアブル配列リストを使用したいと考えています。

Drawable d="some downloaded image from server"

今、ハッシュマップで上記の d を使用したいと思います。

hm.put("flag", d.toString() );

上記の stamenet が機能していません。以前にイメージ ID を送信したためです。今、画像を文字列に変換しています。

だから私は自分の画像をハッシュマップに入れなければなりません。しかし、ダウンロードした描画可能な画像を使用する場合、どのように配置できますか?.

4

3 に答える 3

2

//これはあなたを助けるかもしれません

【1】まず必要なこと

HashMap<String, Object> hm= new HashMap<String, Object>();
Bitmap bmImg;

[2]オンライン画像の場合、ビットマップオブジェクトで取得する関数が1つ必要です

public void downloadFile(final String fileUrl) 
    {
        URL myFileUrl = null;
        try {
            myFileUrl = new URL(fileUrl);
            HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
            conn.setDoInput(true);
            conn.connect();
            //int length = conn.getContentLength();
            InputStream is = conn.getInputStream();
            bmImg = BitmapFactory.decodeStream(is);
        } catch (MalformedURLException e) {
            // imageLoadedHandler.sendEmptyMessage(FAILED);
        } catch (IOException e) {
            // imageLoadedHandler.sendEmptyMessage(FAILED);
        }

    }

// スレッドを使用して hasmap にオンライン画像を配置し、ここにデータを入力する必要があります

for(int i=0;i<number.size();i++){
     HashMap<String, Object> hm= new HashMap<String, Object>();
              new Thread() {
                            public void run() 
                            {    
                            downloadFile(smtLink[ii]);
                            hm.put("image", bmImg);
                        };
                }.start();              
              hm.put("flag", Integer.toString(flags[i]) );
              aList.add(hm);

}

// ビューバインダー クラスが必要

class MyViewBinder implements ViewBinder 
    {
        @Override
        public boolean setViewValue(View view, Object data,String textRepresentation) 
        {
            if((view instanceof ImageView) & (data instanceof Bitmap)) 
            {
                ImageView iv = (ImageView) view;
                Bitmap bm = (Bitmap) data;
                iv.setImageBitmap(bm);
                return true;
            }
            return false;
        }

    }

// ここで、以下のような単純なアダプターを使用してこのデータを設定します。ここでは、アダプターを使用して要件に応じて変更します

adapater1 = new SimpleAdapter(News.this, list, R.layout.homrow, new String[] { "im", "Titel", "Sourcetag", "Date1","im1" }, 
                            new int[] { R.id.homerowmain,R.id.homerowtitle, R.id.homerowsourcetag,R.id.homerowdate, R.id.homerowimgaerrow });
                adapater1.setViewBinder(new MyViewBinder());
                itemlist.setAdapter(adapater1);
于 2012-09-06T10:55:41.910 に答える
0

インポートに android.R がないことを確認してください ...そして、独自の R ファイルを追加してください:)

于 2012-09-06T09:26:34.437 に答える
0

これを試して

  Integer[] flags = {
        R.drawable.Yourimg1, R.drawable.Yourimg2,
        R.drawable.Yourimg3, R.drawable.Yourimg4,          

};
于 2012-09-06T07:32:59.353 に答える