通常在Android內,我們需要以ListView顯示資料列表
列表內item的樣式可以直接使用android內建的item樣式
例如R.android.layout.simple_list_item_1
但如果希望使用自行設計的item樣式,可以透過自訂Adpater來做
以下是設計流程
1.設計Item layout XML
要顯示的itemㄝ,以一個layout xml檔案設計所要呈現的樣式
例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:id="@+id/item_img"
android:layout_width="60dp"
android:layout_height="60dp"/>
<TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/item_title" />
</LinearLayout>
2.自訂Adapter透過自行設計的Adapter將資料與item xml結合顯示
1.extends BaseAdapter
2.在建構子內設定希望傳入的各項資料欄位
public MyAdapter(Context context,String[] title,String[] img){
inflater = LayoutInflater.from(context);
item_title=title;
item_img=img;
}
3.在Adapter內改寫getView()透過getView取得的position當index
再由建構子取得的資料array內得到各item所要顯示的資料
將這item資料帶到view內
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//--將item xml轉成view物件,並取得item內各項元件的view
convertView = inflater.inflate(R.layout.list_item,null);
TextView title_view=(TextView)convertView.findViewById(R.id.item_title);
title_view.setText(item_title[position].toString());
ImageView img_view=(ImageView)convertView.findViewById(R.id.item_img);
Drawable drawable = LoadImageFromWeb(item_img[position]);
img_view.setImageDrawable(drawable);
return convertView;
}
4.顯示ListView要顯示ListVIew的Activity可以直接繼承ListActivity
繼承自ListActivity即已包含了一個list view在裡面
public class PushActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//---set List View----
ListView lv=getListView();
LayoutInflater inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
//--Add Data--------------------
String[] songData=getResources().getStringArray(R.array.songdata_holder);
String[] songImg=getResources().getStringArray(R.array.songimg_holder);
MyAdapter adapter = new MyAdapter(this,songData,songImg);
setListAdapter(adapter);
}
}
沒有留言:
張貼留言