ListView新增simple介面卡,使ListView可以顯示一個ImageView和兩個textview
阿新 • • 發佈:2018-12-15
1.首先在activity_main.xml中建立ListView控制元件
<?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"> <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:dividerHeight="2px" android:divider="#0000ff"> </ListView> </LinearLayout>
2.新建一個list_item.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"> <ImageView //圖片控制元件 android:id="@+id/iv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView //文字控制元件1 android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView //文字控制元件2 android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
3.java程式碼
package com.example.bluehat.wangshibo_ex3_2; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv=(ListView)findViewById(R.id.lv); //建立一個list陣列物件data,data中存放的是Map物件 List<Map<String,Object>> data=new ArrayList<Map<String,Object>>(); //新建多個Map物件 Map<String,Object> map1=new HashMap<String, Object>(); //向Map物件中寫入值,前面的是資料列名,後面是具體的資料 map1.put("name","name0"); map1.put("age","10"); map1.put("icon",R.mipmap.ic_launcher); Map<String,Object> map2=new HashMap<String, Object>(); map2.put("name","name1"); map2.put("age","11"); map2.put("icon",R.mipmap.ic_launcher); Map<String,Object> map3=new HashMap<String, Object>(); map3.put("name","name2"); map3.put("age","12"); map3.put("icon",R.mipmap.ic_launcher); Map<String,Object> map4=new HashMap<String, Object>(); map4.put("name","name3"); map4.put("age","13"); map4.put("icon",R.mipmap.ic_launcher); Map<String,Object> map5=new HashMap<String, Object>(); map5.put("name","name4"); map5.put("age","14"); map5.put("icon",R.mipmap.ic_launcher); //將map物件新增到arrayList陣列data中 data.add(map1); data.add(map2); data.add(map3); data.add(map4); data.add(map5); //為listview裝配介面卡 lv.setAdapter(new SimpleAdapter(this,data,R.layout.list_item,new String[]{"name","age","icon"},new int[]{R.id.tv1, R.id.tv2,R.id.iv})); //通過R.layout.list_item這個引數找到list_item,然後把data裡面的資料顯示在它上面各自對應的控制元件上,再一起作為一行在listview上顯示出來 } // 至於為什麼圖片在左邊顯示,兩行文字在右邊則取決於list_item.xml }
4.效果顯示
總結:
上面java程式碼中的 name age icon 可以理解為資料庫表中的列名。map.put()要做的就是把資料插入到列中去。那麼每一列可以有很多個數據,這就是為什麼有多個map物件。
物件 | name | age | icon |
map1 | name0 | 10 | R.xxx |
map2 | name1 | 11 | R.xxx |
map3 | name2 | 12 | R.xxx |
map4 | name3 | 13 | R.xxx |
如果想使listview的一行顯示更多資料,道理也一樣。 相當於再增加一列資料就好了。