標籤:generate size 取出 ddd linear info sharp http ext
1:首先先建立一個listview的視圖檔案。listview.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" > <!-- 在android開發中ListView是比較常用的組件, 它以列表的形式展示具體內容,並且能夠根據資料的長度自適應顯示。 --> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:divider="#dddddd" android:dividerHeight="1dp"> </ListView></LinearLayout>
2:定義一個顯示介面的視圖檔案。item.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/pic" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:src="@drawable/xms" android:layout_marginBottom="5dp"/> <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toRightOf="@+id/pic" android:textSize="16sp" android:textColor="#333" android:layout_marginTop="10dp"/> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/text1" android:layout_below="@+id/text1" android:textColor="#666" android:textSize="14sp"/> <TextView android:id="@+id/text3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/text2" android:layout_alignParentRight="true" android:textColor="#666" android:textSize="12sp" android:layout_marginRight="5dp"/></RelativeLayout>
3:源檔案中編寫代碼:第一種方式(SimpleAdapter適配器)
package com.huanglinbin.weixintext;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.RadioGroup;import android.widget.SimpleAdapter;public class MainActivity extends Activity {//私人化Listview的控制項。private ListView listView;//私人化ListView的適配器。private SimpleAdapter simpleAdapter;//私人化list集合。private List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();//私人化radiogub的控制項。private RadioGroup radioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //先要找到那兩個控制項。 listView = (ListView) findViewById(R.id.listView1); radioGroup = (RadioGroup) findViewById(R.id.radioGroup1); //把資料來源賦值到集合裡面。 list = getDate(); //定義一個適配器 simpleAdapter = new SimpleAdapter( this,//上下問對象。 list, //資料來源(也就是從資料庫裡面取出來的資料存放到這來,之後就迴圈輸出出來) R.layout.item,//頁面輸出的模板。 new String[]{"pic","text1","text2","text3"}, //這個相當於實體類中的屬性,把這些屬性存放到數組裡面。 new int[]{R.id.pic,R.id.text1,R.id.text2,R.id.text3} //這個相對於控制代碼,通過控制代碼來找到模板中的資料來源。 ); //把這個適配器加入到listview的控制項中去。 listView.setAdapter(simpleAdapter); } //定義資料來源。 private List<Map<String,Object>> getDate(){ //定義一個迴圈,把資料迴圈輸出出來。 for(int i=0;i<5;i++){ //定義一個map集合,把集合加入到map的集合裡面。 Map<String,Object> map = new HashMap<String, Object>(); map.put("pic",R.drawable.xms); map.put("text1", "小魔神"); map.put("text2", "Android一班老師"); map.put("text3", "昨天"); //把map集合加到list集合裡面去。 list.add(map); } return list; } }
第二種方式:(BaseAdapter適配器)
//簡單理解為VC綁在一起 baseAdapter,店長推薦 5星級 lv.setAdapter( new BaseAdapter(){ //返回多少條記錄@Overridepublic int getCount() {// TODO Auto-generated method stubreturn messageList.size();}//每一個item項,返回一次介面@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = null;//布局不變,資料變//如果緩衝為空白,我們產生新的布局作為1個itemif(convertView==null){Log.i("info:", "沒有緩衝,重建"+position);LayoutInflater inflater = MainActivity.this.getLayoutInflater();//因為getView()返回的對象,adapter會自動賦給ListViewview = inflater.inflate(R.layout.listview_item_layout, null);}else{Log.i("info:", "有緩衝,不需要重建"+position);view = convertView;}Message m = messageList.get(position);TextView tv_userName = (TextView)view.findViewById(R.id.tv_userName);tv_userName.setText( m.getUserName() );tv_userName.setTextSize(15);TextView tv_lastMessage = (TextView)view.findViewById(R.id.tv_lastMessage);tv_lastMessage.setText( m.getLastMessage() );tv_lastMessage.setTextSize(12);TextView tv_datetime = (TextView)view.findViewById(R.id.tv_datetime);tv_datetime.setText( m.getDatetime() );tv_datetime.setTextSize(12);return view;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;} } );
Android-listview控制項