Adapter(4)ArrayAdapter示例
1)ArrayAdapter
列表的显示需要三个元素:
a.ListVeiw 用来展示列表的View。
b.适配器 用来把数据映射到ListView上的中介。
c.数据 具体的将被映射的字符串,图片,或者基本组件。
ArrayAdapterFrgmt.java
package com.example.adapter.ArrayAdapter; import java.util.ArrayList; import com.example.adapter.R; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; public class ArrayAdapterFrgmt extends Fragment { private ListView lv; private ArrayList<String> listDatas; private ArrayAdapter<String> arrayAdptr; private void init() { listDatas = new ArrayList<String>(); CustomArrayAdapterItemData item; for (int i = 0; i < 20; i++) { listDatas.add("item" + i); item = new CustomArrayAdapterItemData(); item.title = "title"+i; item.content = "content"+i; } //list_item_array_adapter是自定义的list item,vid_list_item_title是要显示的title arrayAdptr = new ArrayAdapter<String>(getActivity(), R.layout.list_item_array_adapter, R.id.vid_list_item_title, listDatas); lv.setAdapter(arrayAdptr); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.frgmt_array_adapter, container, false); lv = (ListView) v.findViewById(R.id.vid_listview_array_adapter); init(); return v; } }
frgmt_array_adapter.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lid_frgmt_array_adapter" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/vid_listview_array_adapter" android:layout_width="wrap_content" android:layout_height="match_parent" > </ListView> </RelativeLayout>
list_item_array_adapter.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:gravity="center_vertical" android:orientation="horizontal" > <ImageView android:id="@+id/vid_list_item_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:id="@+id/vid_list_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/vid_list_item_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> <Button android:id="@+id/vid_list_tiem_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
效果图:

2)自定义 ArrayAdapter
CustomArrayAdapter.java
public class CustomArrayAdapter extends ArrayAdapter<CustomArrayAdapterItemData> { private LayoutInflater mInflater; public CustomArrayAdapter(Context context, int resource, CustomArrayAdapterItemData[] objects) { super(context, resource, objects); mInflater = LayoutInflater.from(context); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (null == convertView) { convertView = mInflater.inflate(R.layout.list_item_simple_adapter, parent,false); } CustomArrayAdapterItemData dt = getItem(position); TextView title = (TextView) convertView.findViewById(R.id.vid_list_item_title); TextView content = (TextView) convertView.findViewById(R.id.vid_list_item_content); title.setText(dt.title); content.setText(dt.content); return convertView; } }
这个getView方法写的不对,性能有问题,这样每次都要findViewById,正确写法应该使用ViewHolder和tag,见:
http://www.cnblogs.com/sjjg/articles/5446654.html
CustomArrayAdapterItemData.java item的数据
public class CustomArrayAdapterItemData{ public CustomArrayAdapterItemData(){ iconSrc = R.drawable.ic_launcher; title = ""; content = ""; } public int iconSrc; public String title; public String content; }
list_item_array_adapter.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:gravity="center_vertical" android:orientation="horizontal" > <ImageView android:id="@+id/vid_list_item_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:id="@+id/vid_list_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <TextView android:id="@+id/vid_list_item_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> <Button android:id="@+id/vid_list_tiem_action" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>

浙公网安备 33010602011771号