重点:
1、使用布局文件(xml)定义ListView中项的显示样式
2、使用BaseAdapter实现对ListView 列表项的细节控制。
文件:
(1)、列表界面布局文件 :main.xml
(2)、ListView项布局文件 :item.xml
(3)、Adapter实现类:ItemsListAdapter.java
(4)、Activity类:ItemListActivity.java
具体内容:
1、main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#4a4a4a" >
<LinearLayout
android:id="@+id/itemlistContent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="top"
android:orientation="vertical"
android:padding="10dp">
<ListView
android:id="@id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="itemlistcontrol"
></ListView>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
注:这里ListView android:id必须为@id/android:list
<?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="fill_parent"
android:orientation="horizontal"
android:padding="5dp"
android:listSelector="@drawable/list_selector" >
<TextView
android:id="@+id/item_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_gravity="center"
android:textColor="#f3f3f3" />
<TextView
android:id="@+id/item_name1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:layout_gravity="center"
android:textColor="#000000"
android:text="ddd"/>
</LinearLayout>
3、ItemsListAdapter.java
public class ItemsAdapter extends BaseAdapter {
private static final String TAG = "DbAdapter";
private Context mContext;
private List<ItemBean> mList;
private ItemBean item;
private LayoutInflater _LayoutInflater;
private int mDropDownResource;
public ItemsAdapter(Context context, List<ItemBean> list) {
this.mContext = context;
this.mList = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mList==null?0:mList.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mList==null?null:mList.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LogHander.getInstance().d(TAG, "position ="+position);
return createViewFromResource(position,convertView,parent,R.layout.item);
}
private View createViewFromResource(int position, View convertView, ViewGroup parent,
int resource) {
View view=null;
if(_LayoutInflater ==null){
_LayoutInflater = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if (convertView == null) {
view = _LayoutInflater.inflate(resource, parent, false);
} else {
view = convertView;
}
TextView _TextView_id = (TextView) view
.findViewById(R.id.item_id);
TextView _TextView_name = (TextView) view
.findViewById(R.id.item_name1);
if(mList !=null &&mList.size()>=0){
item =(ItemBean)getItem(position);
_TextView_id.setText(item.getId().toString());
_TextView_name.setText(item.getItemName());
}
return view;
}
}
注: 这里ItemBean 只是个简单的用于封装数据的Bean对象,包括2个属性:itemId和itemName
4、ItemListActivity.java
public class ItemAddActivity extends ListActivity {
private Context context = null;
private ArrayList<HashMap<String, String>> itemsList
= new ArrayList<HashMap<String, String>>();
private ListView listview =null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.item_add);
listview =(ListView)findViewById(android.R.id.list);
setItemsList();
}
protected void onResume() {
super.onResume();
};
private void setItemsList(){
itemsList.clear();
SQLHandler sQLHandler =SQLHandler.getInstance(this);
List<ItemBean> list=sQLHandler.getItemList();
for(int i =0;i<list.size();i++){
HashMap<String,String> map =new HashMap<String, String>();
ItemBean ib =list.get(i);
map.put("itemId",String.valueOf(ib.getId()));
map.put("itemName",String.valueOf(ib.getItemName()));
itemsList.add(map);
}
ItemsListAdapter adapter =new ItemsListAdapter(context, list);
setListAdapter(adapter);
}
}