標籤:
在上一篇文章中,我們已經實現在listview顯示資料庫內容的。但是我們listview中,排版不是很好看,所以這篇文章呢,我們來對listveiw進行美化。哈哈,說白了,就是對listview添加一個布局檔案,然後把布局檔案轉化為view對象顯示出來。
這裡代碼我們不貼全部,就貼上新增加的布局檔案和有做修改的方法。
先看圖片吧。
然後看listview的布局檔案,其實從這個例子,大家可以知道,listview的項目可以顯示很複雜的東西,只要是view對象都是可以顯示的額,只要你的布局檔案寫好了。都可以。
list_layout.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" > <TextView android:textSize="20sp" android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="名字" /> <LinearLayout android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="年齡" /> <TextView android:id="@+id/phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手機" /> </LinearLayout></RelativeLayout>
MainActivity.java 這裡只貼出修改的地方,其實也就是修改了 getView的幾條語句而已。這裡寫出 getView方法的內容
public View getView(int position, View convertView, ViewGroup parent) { Girl girl = girList.get(position); /* TextView tv = new TextView(MainActivity.this); tv.setTextSize(18); //擷取集合中的元素 tv.setText(girl.toString());*/ View v ; /* * 做判斷是為了listview的效能最佳化,converView表示一個緩衝區域。 * 在看過的條目,離開螢幕後,其實會被緩衝起來,所以我們沒必要 * 每一次都去 填充,可以先判斷是否有緩衝 * * */ if(convertView ==null){ //把ListView的布局檔案填充為View對象 v = View.inflate(MainActivity.this, R.layout.list_layout, null); }else{ v = convertView ; } /*v.findViewById(R.id.name);前面加v是因為找的布局檔案元素是listView對象的 * 而v載入的布局檔案就是listview的布局檔案 */ TextView name = (TextView)v.findViewById(R.id.name); name.setText(girl.getName()); TextView age = (TextView) v.findViewById(R.id.age); age.setText(girl.getAge()+""); TextView phone = (TextView)v.findViewById(R.id.phone); phone.setText(girl.getPhone()); return v; }
ListView顯示Sqlite的資料美化版與效能最佳化