學習Android之SimpleAdapter顯示網狀圖片

來源:互聯網
上載者:User

標籤:android   xml   layout   布局   




此程式主要的知識點是:SimpleAdapter本身是不支援網狀圖片的, 如果在Map.put(a,b)中 b為一個Bitmap,程式不會報紅色字型,而是在控制台輸出綠色的字型,如下

05-10 15:46:45.474: I/System.out(846): resolveUri failed on bad bitmap uri: [email protected]

要想實現顯示網狀圖片其實很簡單,使用SimpleAdapter中的方法simpleAdapter.setViewBinder()。


simpleAdapter.setViewBinder(new ViewBinder() {@Overridepublic boolean setViewValue(View view, Object data,String textRepresentation) {if (view instanceof ImageView && data instanceof Bitmap) {ImageView iv = (ImageView) view;iv.setImageBitmap((Bitmap) data);return true;}return false;}});


new SimpleAdapter(MainActivity.this,getData(), R.layout.t, new String[] { "images" },new int[] { R.id.ImageVIew_main });


有三個參數view,data,textRepresentation,說說前兩個參數,view 是你自訂布局(如上 R.layout.t)中所有的組件,程式會遍曆一邊布局中的組件,data是你傳的

list<map< , >>(如上getData()方法,返回一個list<map< , >>),程式會遍曆每一項資料。接下來用if()語句篩選就可以了。


既然是網狀圖片,那就需要許可權

 <uses-permission android:name="android.permission.INTERNET" />

代碼如下:

MainActivity.java

public class MainActivity extends ActionBarActivity {ListView listView;List<Map<String, ?>> data;String str[] = { "",       //自己添加圖片網址 h  t  t  p ://"","","" };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listView = (ListView) findViewById(R.id.LV_main);SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,getData(), R.layout.t, new String[] { "images" },new int[] { R.id.ImageVIew_main });simpleAdapter.setViewBinder(new ViewBinder() {@Overridepublic boolean setViewValue(View view, Object data,String textRepresentation) {if (view instanceof ImageView && data instanceof Bitmap) {ImageView iv = (ImageView) view;iv.setImageBitmap((Bitmap) data);return true;}return false;}});listView.setAdapter(simpleAdapter);}public List<Map<String, ?>> getData() {data = new ArrayList<Map<String, ?>>();for (int i = 0; i < str.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("images", returnBitMap(str[i]));data.add(map);}return data;}public Bitmap returnBitMap(String url) {URL myFileUrl = null;Bitmap bitmap = null;try {myFileUrl = new URL(url);} catch (MalformedURLException e) {e.printStackTrace();}try {HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();conn.setDoInput(true);conn.connect();InputStream is = conn.getInputStream();bitmap = BitmapFactory.decodeStream(is);is.close();} catch (IOException e) {e.printStackTrace();}return bitmap;}}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><ListView     android:id="@+id/LV_main"    android:layout_width="fill_parent"    android:layout_height="fill_parent"></ListView> </LinearLayout>

自訂布局檔案

t.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >        <ImageView         android:id="@+id/ImageVIew_main"        android:layout_width="80dp"        android:layout_height="80dp"/></LinearLayout>












聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.