標籤: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>